关于《剑指offer》奇前偶后题目测试不通过的疑问?已解决!
=======问题已解决,自己想当然,造成的后果 || 谢谢大家指导 ===========
题目:输入一个整数数组,调整数组顺序使奇数位于偶数的前面,并且保证原有的顺序。
思路:使用两个游标 i 和 j,开始时i指向数组左侧第一个元素,j指向数组最后一个元素,然后i开始向后遍历,直到找到第一个偶数,另外j向前遍历,直到找到第一奇数,此时偶数在前而奇数在后,因此需要交换两个数。
代码实现:
class Solution { public: void reOrderArray(vector<int> &array) { int size = array.size(); if(size <= 0) return ; int i = 0; int j = size - 1; while(i < j){ //i向后移动,直到array[i]为偶数 while( (i < j) && (array[i] % 2 ) == 1) i++; //j向前移动,直到array[j]为奇数 while( (i < j) && (array[j] % 2 ) == 0) j--; //如果i<j,则交换array[i]和array[j] if(i < j) swap(array[i], array[j]); } } };
但是测试显示的是无法通过测试用例,是代码那里出了问题吗? 望牛油+牛大大们指导!