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. 颜色分类的主要内容,如果未能解决你的问题,请参考以下文章