重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关LeetCode如何查出只出现一次的数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联专注于企业成都营销网站建设、网站重做改版、丹徒网站定制设计、自适应品牌网站建设、H5开发、商城网站制作、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为丹徒等各大城市提供网站开发制作服务。
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如何查出只出现一次的数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。