私の解決策:
1.ダブルポインターを使用して、1つは前に移動し、もう1つは後ろに移動して、偶数の位置を前に、奇数の位置を後ろに変更します。
単語は、スワップ関数を使用できます、、、、、
iとjが増加するときにwhileループを使用できます
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int i=0;
int j=nums.size()-1;
while(i<j){
if(nums[i]%2==0 && nums[j]%2==1){
int tmp=nums[i];
nums[i]=nums[j];
nums[j]=tmp;
}
if(nums[i]%2==1) i++;
if(nums[j]%2==0) j--;
}
return nums;
}
};
2.これは、swap関数を使用した二重ポインターでもありますが、whileループ
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int i=0;
int j=nums.size()-1;
while(i<j){
if(nums[i]%2==0 && nums[j]%2==1)
swap(nums[i],nums[j]);
while(i<j&&nums[i]%2==1) i++;
while(i<j&&nums[j]%2==0) j--;
}
return nums;
}
};