题目描述
链接:https://leetcode-cn.com/problems/single-number/
题解:
1.循环:遍历数字,如果出现两次,则全删去,如果找不到,那么则是唯一的数。
2.哈希表:用字典记录出现过的值,再次出现则删掉,出现偶数次数的值最后不会在字典里,最后那个唯一的键是那个唯一的数。(用了额外的空间)
3.集合法:用列表切片,(那个唯一的数一定出现在偶数索引处)。(用了额外的空间)
4.位运算:
位运算可参考:https://leetcode-cn.com/problems/single-number/solution/dong-hua-yan-shi-136-zhi-chu-xian-yi-ci-de-shu-zi-/
代码:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
i=len(nums)-1
while i >=0:
a=nums[i]
del nums[i]
if a in nums:
del nums[nums.index(a)]
i-=2
else:
return a
class Solution(object):
def singleNumber(self, nums):
hash_table={}
for i in nums:
try:
hash_table.pop(i)
except:
hash_table[i]=1
return hash_table.popitem()[0]
class Solution:
def singleNumber(self, nums) -> int:
nums.sort()
a=set(nums[::2])
b=set(nums[1::2])
n = list(a-b)[0]#用列表取出来唯一的数
return n
class Solution(object):
def singleNumber(self, nums):
a = 0
for i in nums:
a ^= i
return a