题解 | #调整数组顺序使奇数位于偶数前面(二)#
调整数组顺序使奇数位于偶数前面(二)
https://www.nowcoder.com/practice/0c1b486d987b4269b398fee374584fc8
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> reOrderArrayTwo(vector<int>& array) {
// 前后双指针,只需一次遍历,时间O(n),空间O(1)
int i = 0;
int j = array.size()-1;
while(i<j){
while(i<j && array[i]&1) i++;// arr[i]为奇数,i++向右移动,直到arr[i]为偶数
while(i<j && (array[j]&1)==0) j--;// arr[j]为偶数,j--向左移动,直到arr[j]为奇数
if(i<j) swap(array[i],array[j]);
}
// // 在原数组上遍历修改,时间O(n^2),空间O(1)
// for(int i=0;i<array.size();i++){
// if(array[i]&1) continue;// 奇数不需要动
// else{// 若碰到偶数
// // 遍历之后的元素,找到第一个奇数
// bool flag = false;// 是否找到奇数
// for(int j=i+1;j<array.size();j++){
// if(array[j]&1){// 找到奇数
// // 将奇偶元素交换,保证奇在偶前面
// swap(array[i],array[j]);
// flag = true;
// break;
// }
// }
// // 如果偶数后面没有奇数,说明调整完毕,结束外层循环
// if(!flag) break;
// }
// }
return array;
}
};