class Solution {
public:
//前奇数后偶数
vector<int> exchange(vector<int>& nums) {
if(nums.size()<2) return nums;
int i = 0;
int j = nums.size() - 1;
while (i != j){
if (isqo(nums[i]) == 1){
//前面指偶数
i++;
}
else if (isqo(nums[j]) == 0){
//后面指奇数
j--;
}
swap(nums[i],nums[j]);
}
return nums;
}
int isqo(int i){
return (i % 2 == 0) ? 0 : 1;
}
};
第一次写的超过时间限制了 还是上面的方法精妙一点
class Solution {
public:
//前奇数后偶数
vector<int> exchange(vector<int>& nums) {
int i=0;
int j=nums.size()-1;
while(i!=j){
if(isqo(nums[i])==0&&isqo(nums[j])==1){
//前面指偶数 后面值奇数 正好交换
swap(nums[i],nums[j]);
i++;
j--;
}
else if(isqo(nums[i])==0){
//前后所指都是偶数 此时后面指针向前移动一步
j--;
}
else if(isqo(nums[j])==1){
i++;
}
}
return nums;
}
int isqo(int i){
return (i%2==0)?0:1;
}
};