LeetCode如何查出只出现一次的数

这篇文章将为大家详细讲解有关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如何查出只出现一次的数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


分享标题:LeetCode如何查出只出现一次的数
网页链接:http://scyanting.com/article/gisjhj.html