网站建设与运营的公司,php做网站和小程序很好,宜昌便宜做网站,html网站底部导航栏怎么做题目#xff1a;
给定一个非空且只包含非负数的整数数组 nums#xff0c;数组的 度 的定义是指数组里任一元素出现频数的最大值。
你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组#xff0c;返回其长度。 示例 1#xff1a;
输入#xff1a;nums …题目
给定一个非空且只包含非负数的整数数组 nums数组的 度 的定义是指数组里任一元素出现频数的最大值。
你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组返回其长度。 示例 1
输入nums [1,2,2,3,1]
输出2
解释
输入数组的度是 2 因为元素 1 和 2 的出现频数最大均为 2 。
连续子数组里面拥有相同度的有如下所示
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
最短连续子数组 [2, 2] 的长度为 2 所以返回 2 。示例 2
输入nums [1,2,2,3,1,4,2]
输出6
解释
数组的度是 3 因为元素 2 重复出现 3 次。
所以 [2,2,3,1,4,2] 是最短子数组因此返回 6 。代码
class Solution(object):def findShortestSubArray(self, nums)::type nums: List[int]:rtype: intif len(nums)1 or len(set(nums))len(nums):return 1d{}for i in nums:d[i]d.get(i,0)1amax(d.values())num[ch for ch,v in d.items() if va]#找出重复最多的元素ans[]for i in num:left,right0,len(nums)-1while leftright:#双指针找到头尾元素if nums[left]!i:left1elif nums[right]!i:right-1elif nums[left]i and nums[right]i:#找到跳出循环进行遍历下一个元素ans.append(right-left1)breakreturn min(ans)#返回最短子数组长度