classSolution: deffindShortestSubArray(self, nums: List[int]) -> int: # 计算数组的度 counter = {} for num in nums: if num in counter: counter[num] += 1 else: counter[num] = 1 max_degree = max(counter.values())
# 找到数组中出现频数为度的数字的第一次出现位置和最后一次出现位置 first_occurrence = {} last_occurrence = {} for i, num inenumerate(nums): if num notin first_occurrence: first_occurrence[num] = i last_occurrence[num] = i
# 计算每个数字的子数组长度 min_length = len(nums) for num, count in counter.items(): if count == max_degree: min_length = min(min_length, last_occurrence[num] - first_occurrence[num] + 1)
return min_length
448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字
classSolution: deffindDuplicates(self, nums: List[int]) -> List[int]: ans = [] for num in nums: if nums[abs(num) - 1] < 0: ans.append(abs(num)) nums[abs(num) - 1] *= - 1 return ans