题解 | #调整数组顺序使奇数位于偶数前面(二)#
调整数组顺序使奇数位于偶数前面(二)
https://www.nowcoder.com/practice/0c1b486d987b4269b398fee374584fc8
#include <climits> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> reOrderArrayTwo(vector<int>& array) { // write code here // 用于标记左边第一个偶数 int flag = INT_MAX; // 左边未交换的偶数个数 int count = 0; for (int i = 0; i < array.size(); ++i) { if (array[i] % 2 == 0 && flag > i) { flag = i; count++; } if (array[i] % 2 == 0 && flag < i) { count++; } // 遇到奇数且前面有偶数则表示可交换 if (array[i] % 2 == 1 && flag < i) { int temp = array[i]; array[i] = array[flag]; array[flag] = temp; count--; if (count > 0) { flag++; } else { flag = INT_MAX; } i--; //保留在当前位置 } } return array; } };