// 計數排序
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畫效果還不錯
正確的:
第一次畫把0和1的位置搞反了 , 還好大部分定義不變
//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 協議》,轉載必須註明作者和本文連結