找出數組中出現奇數次的數golang

問題描述:
給定一個含有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)
}

輸出結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章