思路与调整数组顺序使奇数位于偶数前面(一)完全相同。这里就不赘述。
具体讲一下有差异的地方。在(一)中要求奇数之间及偶数之间的相对位置不变,那么在交换奇数偶数时就涉及到稳定性的问题,在(一)中选择使用类似插入排序的操作来保证稳定性。而在(二)中,对稳定性不做要求,这无疑降低了难度,直接交换第一个偶数及发现的奇数即可。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> reOrderArrayTwo(vector<int>& array) {
// write code here
if(array.empty()){
return array;
}
int firstEven = 0;
for(int i = 0;i < array.size();i++){
if(array.at(i) % 2 && firstEven == i){
firstEven++;
}
else if(array.at(i) % 2){
int temp = array.at(firstEven);
array.at(firstEven) = array.at(i);
array.at(i) = temp;
firstEven++;
}
}
return array;
}
};