問題描述:
給定一個含有n個元素的整型數組array,找出其中出現奇數次的數。
思路:
遍歷數組,把數組中的元素作爲一個map的key,判斷這個key在map中是否已存在,若不存在value=1,若已存在翻轉value的值(若value=0翻轉成1,若value=1翻轉成0),最後value=1的key就是出現奇數次的數。
代碼如下:
package main
import (
"fmt"
)
// 遍歷數組,把數組中的元素作爲一個map的key,判斷這個key在map中是否已存在,若不存在value=1,
// 若已存在翻轉value的值(若value=0翻轉成1,若value=1翻轉成0),最後value=1的key就是出現奇數次的數。
func oddTimesNum(arr []int) {
timesMap := make(map[int]int)
for _, value := range arr {
v, ok := timesMap[value]
if ok {
if v == 0 {
timesMap[value] = 1
} else {
timesMap[value] = 0
}
} else {
timesMap[value] = 1
}
}
fmt.Println(timesMap)
for k, v := range timesMap {
if v == 1 {
fmt.Println(k)
}
}
}
func main() {
var arr []int
arr = []int{1, 3, 2, 6, 5, 7, 8, 7, 2, 1}
oddTimesNum(arr)
}
輸出結果: