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

leetcode-75. 颜色分类]

时间:2022-10-10 00:33:56浏览次数:76  
标签:index nums int 分类 less ++ 75 leetcode more

75. 颜色分类

  • 荷兰国旗问题,直接分成三部分[0区,1区,2区]

    0区最右边为less指针,开始在0的左边 -1

    2区最左边为more指针,开始在数组最后一个数的右边 nums.length

    index为指针,当index没有超过more区的时候可以进行循环

    • nums[index] == 1,跳过index++

    • nums[index] == 0,就把0区下一位和当前index的数交换,index++

    • nums[index] ==2,就把2区的前一位和当前的index交换,当前index所在的数是2区前一位的数字,还没有进行比较,所以不用index++

    public void sortColors(int[] nums) {
        int less = -1;
        int more = nums.length;
        int index = 0;
        while(index < more){
            if(nums[index] == 1){
                index++;
            }else if(nums[index] == 0){
                swap(nums, index++, ++less);
            }else{
                swap(nums, index, --more);
            }
        }
    }

    public void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }

 

标签:index,nums,int,分类,less,++,75,leetcode,more
From: https://www.cnblogs.com/phonk/p/16774218.html

相关文章