Leetcode Sort Colors

twisted-fate發表於2019-05-21
// 計數排序
func sortColors1(nums []int) {
    //make a map store each color number
    //iterate get numbers
    //iterate with 0 1 2 order , fill in arr

    map1 := make(map[int]int)

    for _, v := range nums {
        map1[v]++
    }

    pointer := 0
    for _, v := range []int{0, 1, 2} {
        for i := 1; i <= map1[v]; i++ {
            nums[pointer] = v
            pointer++
        }
    }
}

畫圖/變數定義 , 區間定義/虛擬碼

使用keynote畫效果還不錯

正確的:
Leetcode Sort Colors

第一次畫把0和1的位置搞反了 , 還好大部分定義不變

Leetcode Sort Colors

//three way partition
func sortColors(nums []int) {
    j := -1
    i := j + 1
    k := len(nums)-1+1

    for i <= k-1 {
        if nums[i] == 0 {
            tmp1 := nums[i]
            nums[i] = nums[j+1]
            nums[j+1] = tmp1
            i++
            j++
            continue
        }
        if nums[i] == 1 {
            i++
            continue
        }
        if nums[i] == 2 {
            k--
            tmp2 := nums[i]
            nums[i] = nums[k]
            nums[k] = tmp2
            continue
        }
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章