Sword Finger Offer Interview Question 21.奇数が偶数の前に来るように配列の順序を調整します[単純]

私の解決策:

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

オリジナルの記事を65件公開 Like1 Visits 487

おすすめ

転載: blog.csdn.net/qq_41041762/article/details/105467413