题目:
给定一个数组,这个数组所有的数字都是成对出现的,只有一个数字是单独的,要求找出这个单独的数字。
解题思路:
考虑用字典,遍历数组,将数组内容作为key存入字典,之后每一次存入字典前判断该数字是否存在于字典中,若存在,则弹出,否则存入。经过这个循环,只有单独的那个数字有存入没有弹出,故Dict中剩余的数字则是那个单独数字。此方法会用到多余的空间。字典中存储的内容都是多出的空间。
另外一个思路是看了Discuss,发现可以用异或操作。因为相同两个数字异或结果为0
代码1(Python,字典):
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
Dict = {}
for i in range(len(nums)):
if nums[i] in Dict:
Dict.pop(nums[i])
else:
Dict[nums[i]]=1
return Dict.keys()[0]
代码2(Python,异或):
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
output = 0
for i in range(len(nums)):
output = output^nums[i]
return output
本文介绍了解决数组中寻找唯一单个数字的问题,提供了两种方法:使用字典存储与异或操作。前者利用字典记录出现次数,后者巧妙运用异或性质解决重复数字问题。
Python&spm=1001.2101.3001.5002&articleId=78674943&d=1&t=3&u=e3732abac7d746889a2d0e592ff38bc7)
1万+

被折叠的 条评论
为什么被折叠?



