LeetCode75 颜色分类
问题描述

2. 思路
双指针[0,left]为0,(left,right)为1,[right,len(nums)-1]为2
遍历nums数组
- 如果nums[i] == 0,swap(nums[i],nums[left]),left++,i++
- 如果nums[i] == 1,i++
- 如果nums[i] == 2,swap(nums[i],nums[right]),right++,i++
3. 代码
func sortColors(nums []int) {
left, right := 0, len(nums) - 1
i := 0
for i <= right {
if nums[i] == 0 {
nums[i], nums[left] = nums[left], nums[i]
left++
i++
} else if nums[i] == 1 {
i++
} else {
nums[i], nums[right] = nums[right], nums[i]
right--
}
}
}
本文介绍了一种解决LeetCode75颜色分类问题的有效算法。该算法使用双指针技术来将数组中的元素分为三个区域:[0,left]为0,(left,right)为1,[right,len(nums)-1]为2。通过遍历数组并交换元素的位置,实现了对数组的快速排序。
367

被折叠的 条评论
为什么被折叠?



