输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 50000
1 <= nums[i] <= 10000
解答:双指针
#include<iostream>
using namespace std;
#include<vector>
vector<int> exchange(vector<int>& nums) {
int right = nums.size() - 1;
int left = 0;
while (left < right) {
if (nums[left] % 2 == 0 && nums[right] % 2 != 0) {
int temp = nums[right];
nums[right] = nums[left];
nums[left] =temp;
}
if (nums[left] % 2 != 0) left++;
if (nums[right] % 2 == 0) right--;
}
return nums;
}
void test01() {
vector<int>nums(4);
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
exchange(nums);
for (vector<int>::iterator it = nums.begin(); it != nums.end(); it++) {
cout << *it << " ";
cout << endl;
}
}
int main() {
test01();
system("pause");
return 0;
}