只出现一次的数字

15 阅读1分钟

思路一:

遍历数组,用一个 map 记录每个字符的出现次数,返回 map 中出现次数为 1 的元素值

func singleNumber(nums []int) int {
	//err 不初始化会报错
	//var myMap map[int]int
	myMap := make(map[int]int)
	//var result int
	for _, item := range nums {
		_, ok := myMap[item]
		if ok {
			myMap[item]++
		} else {
			myMap[item] = 1
			//err 这样结果错误,有可能最后加入的是重复的元素!
			//result = item
		}
	}
	//找到map中值为1的元素
	for key,val:=range myMap{
		if val==1{
			return key
		}
	}
	return -1
}

思路二:异或运算

给这整个数组来个大的异或运算即可

func singleNumber(nums []int) int {
	 result := 0
	for _, item := range nums {
		result ^= item
	}
	return result
}