Mi solucion:
1. Use punteros dobles, uno para atravesar antes y otro para retroceder, cambiando la posición del número par al frente y el número impar al revés
Las palabras pueden usar la función de intercambio ,,,,
Puede usar el ciclo while cuando i y j aumentan
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. También es un puntero doble, que utiliza la función de intercambio, mientras que el bucle
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;
}
};