137. 只出现一次的数字 II
题目:给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
链接 https://leetcode.cn/problems/single-number-ii/
个人思路
- 统计每个数字出现的次数并保存在字典中,然后循环字典,当遇到值为1的数就返回键
class Solution:
def singleNumber(self, nums: List[int]) -> int:
Map = {
}
for i in nums:
Map[i] = Map.get(i,0) + 1
for key,value in zip(Map.keys(),Map.values()):
if value == 1:
return key
return -1
时间复杂度:O(n),其中 n 是数组的长度。
空间复杂度:O(n)。哈希映射中包含最多⌊n/3⌋+1 个元素,即需要的空间为 O(n)
- 找数学关系:sum(nums) == 3a + x , 而3a+3x == sum(set(nums))。
class Solution:
def singleNumber(self