方法一:双指针
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
if(nums.size() <=1 )
return nums;
int begin = 0;
int end = nums.size() - 1 ;
//如果左指针大于右指针则退出循环
while(begin < end)
{
//如果最左边的当前为奇数
if(nums[begin] & 1)
{
//我们把左边的索引++
begin++;
}
//如果最左边的当前为偶数
else
{
//如果右边的数为奇数
if(nums[end] & 1)
{
//则把左右交换
swap(nums[begin],nums[end]);
//交换后左右指针都应该++
begin++;
end--;
}
//如果当前左边为偶数,右边也是偶数,左边应该不动,等待右边右移找到奇数为止
else
{
end--;
}
}
}
return nums;
}
};