本文共 772 字,大约阅读时间需要 2 分钟。
题号:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 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}
//异或运算 相同数字异或为0func singleNumber(nums []int) int { res := 0 for _, i := range nums { res = res ^ i } return res}
如下演示:
【1】
【2】
【3】
❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ
❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~
❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】
❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)
转载地址:http://jigvf.baihongyu.com/