75. 颜色分类

    科技2024-07-09  70

    LeetCode: 75. 颜色分类

    两次遍历

    一次计算出0、1、2的个数 另一次根据个数进行赋值

    public void sortColors(int[] nums) { int a = 0; int b = 0; int c = 0; // 统计 nums 中0、1、2的个数 for (int i = 0; i < nums.length; i++) { if (nums[i] == 0) { a++; } else { if (nums[i] == 1) { b++; } else { c++; } } } for (int i = 0; i < nums.length; i++) { if(i < a){ nums[i] = 0; }else if(i < a+b){ nums[i] = 1; }else { nums[i] = 2; } } }

    双指针法代码

    class Solution { public void sortColors(int[] nums) { int left = 0; int right = nums.length - 1; for (int i = 0; i < nums.length; i++) { while (i < right && nums[i] == 2){ int temp = nums[i]; nums[i] = nums[right]; nums[right] = temp; right--; } if(nums[i] == 0){ int temp = nums[i]; nums[i] = nums[left]; nums[left] = temp; left++; } } } }
    Processed: 0.010, SQL: 9