这篇文章将为大家详细讲解有关LeetCode如何查出只出现一次的数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1
题目描述
给定一个非空整数数组,只有一个数字出现一次,其余出现两次,找出只出现一次的数字。如输入[3,4,5,4,3],输出5。
2
知识点
前两天刷题都是建立哈希表,思维惯性第一反应又是这个。遍历每个值,建立字典记录出现次数,返回出现次数为1的值即可。
class Solution: def singleNumber(self, nums: List[int]) -> int: countnum=dict() for i in nums: if i in countnum: countnum[i]=countnum[i]+1 else: countnum[i]=1 for e,v in countnum.items(): if v == 1: return e
python中set表示无序不重复集合,对集合可直接求差值,得到两个集合中不同的值。
class Solution: def singleNumber(self, nums: List[int]) -> int: nums.sort() return list(set(nums[::2]) - set(nums[1::2]))[0]
看其他人解题思路看到的方法。异或运算规则是:如果a、b两个值不相同,则结果为1;如果a、b两个值相同,结果为0。计算机中用二进制进行存储,所以[3,5,3]通过异或有如下结果:3是011,5是101,两者异或结果为110,再与3进行异或则为011^110=101,即所要的结果5。
class Solution: def singleNumber(self, nums: List[int]) -> int: res = 0 for i in nums: res ^= i return res
关于“LeetCode如何查出只出现一次的数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。