欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode-136. 只出现一次的数字(Goland实现)

程序员文章站 2022-06-11 18:57:11
...

题号:136. 只出现一次的数字

        给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

 示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4

 解题思路:

1、map法:遍历数组存map,遇相同元素则从map中删除,最后map输入即为解题答案

2、异或法:异或运算 相同数字异或为0【如下:debug演示】

//map法
func singleNumber(nums []int) int {

	var m = make(map[int]int)
	for i := 0; i < len(nums); i++ {
		_, ok := m[nums[i]]
		if ok {
			//删除重复元素
			//delete(m, nums[i])
		} else {
			//存map 
			m[nums[i]] = i
		}
	}
	for k := range m {
		return k
	}
	return -1
}
//异或运算  相同数字异或为0
func singleNumber(nums []int) int {
	res := 0
	for _, i := range nums {
		res = res ^ i
	}
	return res
}

 如下演示:

LeetCode-136. 只出现一次的数字(Goland实现)


 往期回顾:

【1】LeetCode-122. 买卖股票的最佳时机 II(Goland实现)  

【2】LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)  

【3】LeetCode-58. 最后一个单词的长度(Goland实现)​​​​​​​


❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ 

❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)