力扣-75.颜色分类

题目链接

75.颜色分类

class Solution {
    public void sortColors(int[] nums) {
        int p0 = 0;
        int p2 = nums.length - 1;
        int p = 0;
        //注意循环结束的条件
        while (p <= p2) {
            if (nums[p] == 2) {
                swap(nums, p, p2);
                p2--;
            } else if (nums[p] == 1) {
                p++;
            } else {
                swap(nums, p, p0);
                p++;
                p0++;
            }
        }
    }

    public void swap(int[] nums, int a, int b) {
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] = temp;
    }
}

小结:注意遇到 0 和遇到 2 的时候只能有一个移动 p 指针,另一个不动,用于再次检查,防止错过,如[1,2,0]

你可能感兴趣的:(java二刷力扣hot100,leetcode,算法)