Sword Finger Offer Entrevista Pregunta 21. Ajuste el orden de la matriz para que los números impares estén delante de los números pares [Simple]

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;
    }
};

Publicado 65 artículos originales · Me gusta1 · Visitas 487

Supongo que te gusta

Origin blog.csdn.net/qq_41041762/article/details/105467413
Recomendado
Clasificación