【leetcode hot 100 75】颜色分类

解法一:用双指针(已经排好的+待排的),按0-1-2的顺序排序

class Solution {
    public void sortColors(int[] nums) {
        int left = -1; // 已经排好的
        int right = 0; // 待排的
        int n = nums.length;
        // 先排红色0
        for(int i=right;i<n;i++){
            if(nums[i]==0){
                int temp = nums[i];
                nums[i] = nums[left+1];
                nums[left+1] = temp;
                left++;
                right++;
            }
        }
        // 再排白色1
        for(int i=right;i<n;i++){
            if(nums[i]==1){
                int temp = nums[i];
                nums[i] = nums[left+1];
                nums[left+1] = temp;
                left++;
                right++;
            }
        }
        
        // 最后排蓝色2,其实可以不排,只剩下蓝色了
        // for(int i=right;i
        //     if(nums[i]==2){
        //         int temp = nums[i];
        //         nums[i] = nums[left+1];
        //         nums[left+1] = temp;
        //         left++;
        //         right++;
        //     }
        // }
    }
}

你可能感兴趣的:(【leetcode,hot,100】,leetcode,算法,数据结构)