【剑指offer】面试题 21:调整数组顺序使奇数位于偶数前面
2017-07-17 20:23
441 查看
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。时间限制:1秒 空间限制:32768K 热度指数:141774
本题知识点: 数组
思路
C++版本
定义两个指针,第一个指针初始化时指向数组的第一个数字,它只往后移动;第二个指针初始化时指向数组的最后一个数字,它只往前移动。
在两个指针相遇前,第一个指针总是在第二个指针的前面。
如果第一个指针指向的数字是偶数,并且第二个指针指向的数字是奇数,则交换这两个数字。
如果第一个指针没有遇到偶数,则不断的往后移动,直到遇到偶数;此时第一个指针遇到偶数,
就停止移动,等待交换;与此同时,第二个指针不断的往前移动,直到第二个指针遇到奇数,此时交换两个数字;
同理,第二个指针遇到奇数,同样停止移动,等待交换,直到第一个指针遇到偶数;
Python版本
1、类似于C++算法,判断奇偶,再交换;
2、定义两个空的数组,遇到奇数放奇数的数组里,遇到偶数放偶数的数组里,最后直接显示两个数组的和;
Note
对于C++ 版本的利用指针来判断,Python实现显得更加简单
参考代码
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
a = [] # 奇数
b = [] # 偶数
for i in array:
if i & 0x1 == 1:
a.append(i)
else:
b.append(i)
return a + b
相关文章推荐
- 剑指offer--面试题21:调整数组顺序使奇数位于偶数前面
- 【剑指offer】面试题21:调整数组顺序使奇数位于偶数前面
- 剑指Offer----面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面
- 【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】
- 剑指offer之面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14 调整数组顺序使奇数位于偶数前面
- 【剑指offer】面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer之面试题14:调整数组顺序使得奇数位于偶数前面
- 剑指offer 面试题14—调整数组顺序使奇数位于偶数前面
- 剑指offer-面试题 14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题[14]-调整数组顺序使奇数位于偶数前面
- 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer 面试题14 调整数组顺序使奇数位于偶数前面
- 剑指offer 面试题14:调整数组顺序使奇数位于偶数前面(C++版)
- 剑指offer面试题14-调整数组顺序使奇数位于偶数前面
- 剑指offer之面试题14 调整数组顺序使奇数位于偶数前面 之菜鸟与小牛写法对比
- 剑指Offer之面试题14:调整数组顺序使奇数位于偶数前面
- 【剑指Offer面试题】 九度OJ1516:调整数组顺序使奇数位于偶数前面
- 剑指offer-面试题14-调整数组顺序使奇数位于偶数前面