找出数组中出现奇数次的数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)
}

输出结果:
在这里插入图片描述

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