其他分享
首页 > 其他分享> > leetcode-75. 颜色分类

leetcode-75. 颜色分类

作者:互联网

 

 

class Solution {
public:
    void sortColors(vector<int>& nums) {

        int i = 0;
        int j = nums.size()-1;
        int left = 0;
        int right = nums.size()-1;
        // 遍for循环,第一遍 移动0;
        while(i<=nums.size()-1){
            if(nums[i]==0){
                int temp = nums[i];
                nums[i] = nums[left];
                nums[left] = temp;
                left++;
            }
            i++;
            
        }
        // 第二遍移动2;
        while(j>=0){
            if(nums[j]==2){
                int temp = nums[j];
                nums[j] = nums[right];
                nums[right] = temp;
                left++;
                right--;
            }
            j--;
        }
        return;

    }
};

 只需一次遍历

class Solution {
public:
    void sortColors(vector<int>& nums) {

        int left = 0;  // 令左指针左边的数都为1
        int right = nums.size()-1;  // 令右指针右边的数都为2
        int i = 0;  // i进行遍历,
        // 遍for循环,第一遍 移动0;
        while(i<=right){
            if(nums[i]==0){
                int temp = nums[i];
                nums[i] = nums[left];
                nums[left] = temp;
                left++;
                i++;
            }else if(nums[i]==2){
                int temp = nums[i];
                nums[i] = nums[right];
                nums[right] = temp;
                right--;  // 不执行i++,因为还需要判断交换后的值
            }else{
                i++;
            } 
        }
        return;


    }
};

 

标签:第一遍,right,nums,int,分类,75,left,leetcode,size
来源: https://www.cnblogs.com/ymec/p/15132238.html