类似于快排的思想,i, j分别指向数组起始位置和最终位置,i是从前往后遍历,如果i所指的数为奇数,则继续向后走,否则,如果是偶数,则停下,j是从后向前遍历,如果是偶数,就往前走,奇数就停下,然后交换a[i],a[j]。
class Solution {
public:
void reOrderArray(vector<int> &array) {
int i = 0, j = array.size() - 1;
while (i <= j)
{
if (i <= j && array[i] % 2 == 1) i ++;
if (i <= j && array[j] % 2 == 0) j --;
if (i < j) swap(array[i], array[j]);
}
}
};