75.颜色分类
题意
其实就是排序,数组中只会出现 0, 1, 2 三个数字, 按照从小到大排序
输入输出样例
输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]
算法
双指针算法 这个算法比较特殊,直接背过就好
i, j 指向数组头部,k 指向尾部
如果 a[i] = 0 交换 a[i] [j], i ++ j ++
如果 a[i] = 1 i ++
如果 a[i] = 2 交换 a[i] a[k], k ++
Go 代码
func sortColors(nums []int) {
i := 0
j := 0
k := len(nums) - 1;
for i <= k {
if nums[i] == 0 {
nums[i], nums[j] = nums[j], nums[i]
i ++
j ++
} else if nums[i] == 1 {
i ++
} else {
nums[i], nums[k] = nums[k], nums[i]
k --
}
}
}