75. Sort Colors

Posted skillking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了75. Sort Colors相关的知识,希望对你有一定的参考价值。

一、题目

  1、审题

  技术分享图片

  2、分析

    荷兰国旗问题。用 0,1,2 代表颜色,将数组中的所有的 0 排在前面, 1 排在中间,2排在后面。

 

二、解答

  1、思路:

    ①、选用三个指针。 left 与 current 指向下标为 0 的元素; right 指向数组末尾。

    ②、遍历数组,当 current <= right 时:

      当 current 指向元素为 0 时,交换 left、current 的值,同时 left++,current++;

      当 current 指向元素为 1 时,current++;

      当current 指向元素为 2 时,交换 current、right 值,同时 right--

public void sortColors2(int[] nums) {
        
        int len = nums.length;
        if(len < 2)
            return;
        
        int left = 0;
        int right = len - 1;
        int current = 0;
        while(current <= right) {
            if(nums[current] == 0){
                swap(nums, left, current);
                left++;
                current++;
            }
            else if(nums[current] == 1) {
                current++;
            }
            else {
                swap(nums, right, current);
                right--;
            }
        }
    }

 

以上是关于75. Sort Colors的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 75. 颜色分类(Sort Colors)

75. Sort Colors

[leetcode sort]75. Sort Colors

Leetcode 75. Sort Colors

75. Sort Colors

75. Sort Colors