剑指Offer系列-面试题14:调整数组顺序使奇数位于偶数前面
2017-02-14 22:04
453 查看
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
void reOrderArray(vector<int> &array) { if(array.size() <= 0) { return; } int head = 0; int tail = array.size() - 1; while(head < tail) { while(head < tail && (array[head] % 2) != 0) { head += 1; } while(head < tail && (array[tail] % 2) == 0) { tail -= 1; } if(head < tail) { int temp = array[head]; array[head] = array[tail]; array[tail] = temp; } } }这样只是翻转了整个数组,但是奇数之间的相对顺序也翻转了,《剑指Offer》中没有要求相对顺序保持不变,但是在牛客网(NewCoder)的OJ系统中要求保持相对顺序不变,在讨论区中找到代码如下
void reOrderArray(vector<int> &array) { for (int i = 0; i < array.size(); i++) { for (int j = array.size() - 1; j>i; j--) { if (array[j] % 2 == 1 && array[j - 1]%2 == 0) // 前偶后奇交换 { swap(array[j], array[j-1]); } } } }
相关文章推荐
- 剑指offer面试题14:调整数组顺序使奇数位于偶数前面
- 《剑指Offer》面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer-面试题14:调整数组顺序使奇数位于偶数前面
- 《剑指Offer》学习笔记--面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14——调整数组顺序使奇数位于偶数前面
- 《剑指Offer》读书笔记---面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- 剑指offer面试题14 调整数组顺序使奇数位于偶数前面
- 《剑指offer》面试题14:调整数组顺序使奇数位于偶数前面
- (剑指Offer)面试题14:调整数组顺序使奇数位于偶数前面
- 剑指Offer学习之面试题14 :调整数组顺序使奇数位于偶数前面
- 【剑指offer系列】 调整数组顺序使奇数位于偶数前面___14
- 剑指offer面试题14-调整数组顺序使奇数位于偶数前面
- 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面
- 剑指offer_面试题14_调整数组顺序使奇数位于偶数前面(函数指针用法)
- 剑指offer面试题14~调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- P102、面试题14:调整数组顺序使奇数位于偶数前面
- 面试题14:调整数组顺序使奇数位于偶数前面
- 面试题14-调整数组顺序使奇数位于偶数前面