030_颜色分类

知识点:双指针

LeetCode第七十五题:https://leetcode-cn.com/problems/sort-colors

评论区有说直接借用库函数排序,姑且不说判题系统允不允许直接用sort,就算用了时间复杂度至少也是O(nlogn)吧,看看下面的双指针,是O(n)哦。

语言:GoLang

// 双指针:左右分别指向
func sortColors(nums []int)  {
    left, right := 0, len(nums) - 1
    for i := 0; i <= right; {
        if nums[i] == 0 {
            nums[left], nums[i] = nums[i], nums[left]
            left++
            i++
        } else if nums[i] == 2 {
            nums[right], nums[i] = nums[i], nums[right]
            right--
        } else {
            i++
        }
    }
}
posted @ 2020-03-22 15:07  Cenyol  阅读(93)  评论(0)    收藏  举报