LeetCode-136. 只出现一次的数字(Goland实现)
程序员文章站
2022-06-11 18:57:11
...
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 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
}
如下演示:
往期回顾:
【1】LeetCode-122. 买卖股票的最佳时机 II(Goland实现)
【2】LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)
【3】LeetCode-58. 最后一个单词的长度(Goland实现)
❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ
❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~
❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】
❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)
上一篇: 优酷视频打不开原因是什么?怎么解决?
下一篇: 二分法查找