1、找到数组的度
2、找到与nums相同度的最短连续子数组
使用三个字典,left用于记录每个元素在数组中第一次出现的位置,right用于记录每个元素在数组中最后一次出现的位置,counter用于记录每个元素在数组中出现的次数。
1 def findShortestSubArray(nums): 2 left, right = dict(), dict() 3 counter = collections.Counter() 4 for i, num in enumerate(nums): 5 if num not in left: 6 left[num] = i 7 right[num] = i 8 counter[num] += 1 9 degree = max(counter.values()) 10 res = len(nums) 11 for k, v in counter.items(): 12 if v == degree: 13 res = min(res, right[k] - left[k] + 1) 14 return res
标签:right,697,res,counter,num,数组,left From: https://www.cnblogs.com/wanxueyu/p/16741577.html