75. 颜色分类

Posted lgz0921

tags:

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

题目链接:https://leetcode-cn.com/problems/sort-colors/

思路:用两个指针,一个表示0的位置(p0),一个表示1的位置(p1)。然后从前往后遍历,有三种情况:

(1)如果i的位置的元素是0,就交换p0与i的位置的元素。此时还需要判断p0的位置的元素是不是1,也就是判断p0是不是小于p1,如果是则再交换p1与i的位置的元素(就是把前面交换到i位置的1再交换到p1的位置),如果不是就什么都不做。最后p0++,p1++

(2)如果i的位置的元素是1,就交换p1与i的位置的元素,p1++

(3)如果i的位置的元素是2,就什么都不做

上代码:

class Solution {
    fun sortColors(nums: IntArray): Unit {
        var p0 = 0
        var p1 = 0
        for (i in nums.indices) {
            if (nums[i] == 0) {
                nums[p0] = nums[i].also { nums[i] = nums[p0] }
                if (p0 < p1) {
                    nums[p1] = nums[i].also { nums[i] = nums[p1] }
                }
                p1++
                p0++
            } else if (nums[i] == 1) {
                nums[p1] = nums[i].also { nums[i] = nums[p1] }
                p1++
            }
        }
    }
}

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

LeetCode——75. 颜色分类

leetcode75 颜色分类(Medium)

75. 颜色分类

leetcode-----75. 颜色分类

[LeetCode] 75. 颜色分类

LeetCode 75. 颜色分类