标签:22 结果 Python res 元素 列表 -- 异或 给定
题目
给定一个非空整数列表,除了某个元素只出现一次以外,其余每个元素均出现两次。在不使用编程语言的内置函数前提下,请找出那个只出现了一次的元素。
例如:
给定一个列表:[4, 1, 2, 1, 2],返回结果:4
给定一个列表:[2, 2, 1],返回结果:1
实现思路
- 通过
位运算
来实现,设置一个返回值res,默认值为0 - 遍历列表元素,每次均与res进行异或运算
- 列表中只有1个元素出现一次,其余元素均出现两次,相同元素异或的结果为0,所以最终的结果res就是这个只出现一次的元素
在二进制的异或运算中,例如a=12,b=7,那么a异或b的结果c计算如下:
a = 0 0 0 0 1 1 0 0
b = 0 0 0 0 0 1 1 1
c = 0 0 0 0 1 0 1 1 (相同位的值为0,不同为1)所以我们可以看出:0异或任一个数a,其结果为 a;任一数a异或自己,也就是 a异或a,其结果为 0
代码实现
def singleNumber(nums):
res = 0
for num in nums:
res = res ^ num
return res
标签:22,结果,Python,res,元素,列表,--,异或,给定 来源: https://www.cnblogs.com/wintest/p/15473373.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。