输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。
双指针法
左指针找偶数,右指针找奇数,找到后进行交换。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> reOrderArrayTwo(vector<int>& array) {
int left = 0, right = array.size()-1;
while(left < right)
{
while(left < right && (array[left] & 1))
{
// left找偶数,是奇数,++left
++left;
}
while(left < right && !(array[right] & 1))
{
--right;
}
swap(array[left], array[right]);
}
return array;
}
};