Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
题目意思很清楚,给你一个数组,里面所有元素都出现两次,只有一个出现一次,让你找出这个数。
这一题要在O(n)时间复杂度内求解,其实是比较容易的,解法很多。
下面说两种:
def singleNumber1(self, nums):
dic = {}
for num in nums:
dic[num] = dic.get(num, 0)+1
for key, val in dic.items():
if val == 1:
return key
第一种就是用字典去一一对应key和value,很明了。
第二种是新开一个list,出现一个新数就加进去,再出现一次就移出来,这样最终list里只剩那个出现一次的数了。
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
no_duplicate_list = []
for i in nums:
if i not in no_duplicate_list:
no_duplicate_list.append(i)
else:
no_duplicate_list.remove(i)
return no_duplicate_list.pop()