调整数组顺序使奇数位于偶数前面
一、对最终的奇数和偶数不需要保持顺序的版本
无法AC
class Solution { public: void reOrderArray(vector<int> &array) { int len=array.size(); int left=0,right=len-1; //left指针指向偶数,right指向奇数则调整 //双指针之左右指针 while( left<right ) { //一定要加括号,不然会超时 while( left<right && (1 == (array[left]&1) )) { ++left; } while( left<right && (0 == (array[right]&1) ) ) { --right; } if( left<right && (0==(array[left]&1) ) && (1==(array[right]&1) ) ) { array[left]^=array[right]; array[right]^=array[left]; array[left]^=array[right]; ++left; --right; } } } };
样例:
[1,2,3,4,5,6,7]
输出
[1,7,3,5,4,6,2]
但是要求
[1,3,5,7,2,4,6]
记载一个bug
超时。由于优先级
0==(array[left]&1)
这个先前没有加上括号,结果超时了