题目描述:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,3,2]
输出: 3
示例 2:
输入: [0,1,0,1,0,1,99]
输出: 99
解题思路:
用字典存储每个数字出现的次数,在遍历字典找出只出现一个的数字(时间比较长)
class Solution:
def singleNumber(self, nums: List[int]) -> int:
dic={}
for i in nums:
dic[i]=dic.get(i,0)+1
#print(dic)
for key,value in dic.items():
if value==1:
return key
评论区答案1:
用所有数字的和来求解:
return (3*sum(set(nums)) - sum(nums)) // 2