`
messi_18
  • 浏览: 98773 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一道面试题-一任意整数数组。写一个函数,把数组里的奇数放前面。偶数放后面。

 
阅读更多
一坨任意整数数组。写一个函数,把数组里的奇数放前面。偶数放后面。来自http://blog.csdn.net/g9yuayon/article/details/2679202
想到了算法之一
# this function is used to move all odd number to front part of an array and even numbers end.
def test(arr)
	 endix = arr.size-1
	 arr.each_with_index do |v,i|
         if i >= endix
			return
		 end
		 
		 if v % 2 == 0 # met a even
			 # swap this even with the last odd
			 until arr[endix] % 2 == 1 or endix <= i
				endix -= 1
			 end
			 arr[i],arr[endix]=arr[endix],arr[i]
		 end
	 end
end

时间复杂度是O(n),空间复杂度是O(1).
分享到:
评论

相关推荐

    wind0926#JAVA2020#面试题21. 调整数组顺序使奇数位于偶数前面1

    面试题21. 调整数组顺序使奇数位于偶数前面题目链接面试题21. 调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,

    前端大厂最新面试题-算法.docx

    * 调整数组顺序使奇数位于偶数前面 * 链表中倒数第 k 个节点 * 反转链表 * 合并两个排序的链表 * 树的子结构 * 二叉树的镜像 * 顺时针打印矩阵 * 定义一个栈,实现 min 函数 * 栈的压入弹出 * 从上往下打印二叉树 * ...

    剑指Offer(Python多种思路实现):调整数组的顺序使奇数位于偶数前面

    本题是其中的第21题,要求用Python实现一个函数,将输入的整数数组调整顺序,使得所有的奇数位于数组的前半部分,而所有的偶数位于后半部分。这里提供了两种不同的解决方案。 第一种解题思路利用了两个指针,分别...

    c语言面试题之双指针按奇偶排序数组.zip

    针对"双指针按奇偶排序数组"的问题,我们需要一个包含整数的数组,并按照以下规则重新排列:所有偶数应该排在前面,所有奇数应该排在后面,但保持原有顺序不变(即相对位置)。例如,如果原数组为[1, 2, 3, 4, 5],...

    python-leetcode面试题解之寻找两个正序数组的中位数.zip

    中位数是将一组数值从小到大排列后处于中间位置的数,在奇数个数的情况下是中间那个数,偶数个数时则是中间两个数的平均值。 解决此问题的关键在于如何有效地找到两个有序数组的中位数,而无需实际合并它们,因为...

    百度最新的面试题集锦

    **题目描述**:实现一个函数`func`,该函数接收一个正整数`n`作为参数,并计算使`n`变为1所需的最少操作次数。操作包括:如果`n`为偶数,则除以2;如果`n`为奇数,则可以加1或减1。 **示例**: ``` func(7) = 4 ...

    Python测试面试题.pdf

    - 根据闰年的定义,可以编写函数来判断一个年份是否为闰年。通常,闰年需满足以下条件:能被4整除但不能被100整除,或者能被400整除。 7. **100以内偶数/奇数和**: - 计算一定范围内偶数或奇数的和,可以使用...

    airbnb 软件工程师面试题

    - **定义**:对于任意一个正整数n,如果n是偶数,则将它除以2;如果是奇数,则将它乘以3再加1。不断重复这样的运算,最终都能够回到1。 - **实现思路**: - 使用递归或循环实现该过程。 - 为提高效率,可以使用...

    java代码-数组中两种数出现奇数次,其他数出现偶数次,找到这两个数

    这是一个常见的面试题,它考察了对位运算、哈希表以及数组遍历的理解。 首先,我们可以使用一个哈希表(HashMap)来记录每个元素出现的次数。遍历数组时,对于每个元素,我们将其作为键(key),对应的出现次数作为...

    C++面试题主要看这个(很不错的C++面试题)

    ### C++面试题知识点梳理 #### 1. Static 关键字的用途 - **作用域限制**:在C++中,`static`关键字用于限制变量的作用域。如果在一个文件中定义了一个`static`变量,那么它只能在这个文件内部被访问。 - **存储域...

    N道c#面试题(经典奉献)

    给定一个正整数m,这段代码将1到m的所有奇数项相加,偶数项相减,输出最终结果。 11. **应用程序域(AppDomain)**: 应用程序域是.NET Framework中的一种隔离机制,它提供了安全性和资源管理,每个.NET应用程序...

    c++笔试面试题

    【C++笔试面试题解析】 在C++的面试和笔试中,常见的问题涵盖了语言的基础、高级特性、数据结构、算法等多个方面。以下是对题目中提到的一些知识点的详细解释: 1. 文件操作: - `fopen` 和 `fclose`:分别用于...

    700道JavaScript习题及面试题(含答案)

    - **yield关键字:** yield是一个操作符,用于函数内部,它会暂停函数的执行并返回一个值,同时保存当前的函数状态,以便之后可以重新从该位置继续执行。 - **迭代器:** 当调用一个生成器函数后,函数并不立即执行...

    07-小米面试题 pdf 资料

    在数据库领域,中位数是指一组数值中间的值,当数值个数为奇数时,中位数是正中间的那个数;当数值个数为偶数时,中位数通常是中间两个数的平均值。在不使用内置函数或窗口函数(如RANK()、DENSE_RANK()、PERCENTILE...

    ASP.net面试题

    ASP.NET面试题主要涵盖C#基础、ASP.NET特性和编程实践等多个方面,这些知识点对于准备ASP.NET相关的面试至关重要。以下是对这些题目所涉及知识点的详细解释: 1. 访问修饰符(private、protected、public、internal)...

    各大单位的面试题

    根据给定文件的信息,我们可以提炼出五个主要的IT面试题及其解答思路,下面将逐一解析这些知识点。 ### 1. 实现一个函数计算到达1所需的最少操作次数 #### 题目描述 编写一个函数 `int func(unsigned int n)`,该...

    .net常见面试题

    ### .NET 常见面试题解析 #### 1. 访问修饰符的理解与应用 **题目**:简述 `private`、`protected`、`public`、`internal` 修饰符的访问权限。 - **`private`**: 表示私有成员,只能在其所在的类内部被访问。这种...

    java面试题及答案-非常全面(包括基础、网络、数据结构、算法及IT大厂面经)

    - **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **工厂模式**:提供创建一系列相关或相互依赖对象的接口,无需指定它们具体的类。 - **观察者模式**:当一个对象的状态发生改变时,所有依赖于它...

Global site tag (gtag.js) - Google Analytics