数组的度

🎯 问题描述(来源于LeetCode)

给定一个非空且只包含非负数的整数数组 nums,数组的  的定义是指数组里任一元素出现频数的最大值。
你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。

💻 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
def findShortestSubArray(self, nums: List[int]) -> int:
info=dict()
for i,num in enumerate(nums):
if num in info:
info[num][0]+=1
info[num][2]=i
else:
info[num]=[1,i,i]
du=minlen=0
for count,left,right in info.values():
if du < count:
du=count
minlen=right-left+1
elif du==count:
x=right-left+1
if x< minlen:
minlen=x
return minlen

📊 性能分析

提交结果

  • 运行时间:7ms击败100.00%
  • 内存消耗:19.54MB击败40.20%

复杂度验证

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n)