调整数组顺序使奇数位于偶数前面
一、对最终的奇数和偶数不需要保持顺序的版本
无法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)
这个先前没有加上括号,结果超时了

京公网安备 11010502036488号