题目

给定一个非空且只包含非负数的整数数组 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 。
提示:
nums.length 在 1 到 50,000 范围内。
nums[i] 是一个在 0 到 49,999 范围内的整数。
来源:力扣(LeetCode)

解题思路

  这个题目的第一步是统计元素频率,根据示例1我们可以很明显的发现,在一个数组中能够使得度最大的元素可能不止一个,所以需要找出全部的可能元素。接下来对于每一个可能的元素,我们分别在数组的头部和尾部向中间遍历,找出子数组的长度,遍历每一个可能的元素并且求出子数组的长度同时更新长度的最小值。

class Solution:def findShortestSubArray(self, nums: List[int]) -> int:degree=Counter(nums)  #统计频率MAX=max(degree.values()) #求最大度temp=[]for i,j in degree.items():  #找出所有符合最大度的元素if j==MAX:temp.append(i)MIN=float('inf')for i in temp:x=len(nums)-nums[::-1].index(i)-nums.index(i) #正向反向遍历if x<MIN:MIN=xreturn MIN

LeetCode简单题之数组的度相关推荐

  1. LeetCode简单题之数组形式的整数加法

    题目 对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组.例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]. 给定非负整数 X 的数组形式 A,返回整数 X+ ...

  2. LeetCode简单题之数组异或操作

    题目 给你两个整数,n 和 start . 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length . 请返回 nums 中所有元素 ...

  3. LeetCode简单题之数组中的字符串匹配

    题目 给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词.请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词. 如果你可以删除 words[j] 最左侧和/或最 ...

  4. LeetCode简单题之数组序号转换

    题目 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号. 序号代表了一个元素有多大.序号编号的规则如下: 序号从 1 开始编号. 一个元素越大,那么序号越大.如果两个元素相等, ...

  5. LeetCode简单题之数组元素积的符号

    题目 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 . 如果 x 是负数,返回 -1 . 如果 x 是等于 0 ,返回 0 . 给你一个整数数组 nu ...

  6. LeetCode简单题之数组中两元素的最大乘积

    题目 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值. 请你计算并返回该式的最大值. 示例 1: 输入:nums = ...

  7. LeetCode简单题之数组中第 K 个独一无二的字符串

    题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 .如果 少于 k 个独一无二的字符 ...

  8. LeetCode简单题之数组的相对排序

    题目 给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中. 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相 ...

  9. LeetCode简单题之数组拆分 I

    题目 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), -, (an, bn) ,使得从 1 到 n 的 min(ai, bi) ...

最新文章

  1. git clone 代码下载速度慢的解决方法
  2. 获取clientheight为0_用10行python代码获取全国城市交通生活圈
  3. java中Long的比较
  4. Echarts数据可视化grid直角坐标系(xAxis、yAxis),开发全解+完美注释
  5. C#反编译软件查看dll文件源码
  6. pygame 鼠标事件
  7. 【转】灵格斯词霸怎样在 PDF 文档中取词?
  8. 漂浮广告代码 php,JS带关闭按钮的网页漂浮广告代码
  9. 【Windows】键盘禁用(屏蔽)Win快捷键
  10. laravel 30分站搭建迷你博客
  11. python实现搜索功能_python实现搜索框关键词采集功能
  12. 别出心裁的Linux系统调用学习法
  13. 人生苦短_人生苦短,懂事太晚!
  14. Scrollbar样式介绍
  15. mactxt文件如何转换成html,最佳的用于Mac上的PDF文件转换到HTML文件的转换器
  16. 递归习题—排队游戏(C程序设计进阶 第3周)
  17. java商城项目开发背景描述_javaweb凌翊商城项目展示概述.ppt
  18. 安卓从入门到进阶第九章(自动亮屏)
  19. 搜索引擎SEO因素的类型
  20. 模型稳定度指标PSI

热门文章

  1. log4j屏蔽掉某个包下的log日志打印
  2. xgboost重要参数1
  3. Tensorflow函数——tf.variable_scope()
  4. CVD-ALD前驱体材料
  5. 2021年大数据HBase(八):Apache Phoenix的基本介绍
  6. Python:从零搭建Redis-Scrapy分布式爬虫
  7. [JavaScript] JavaScript 值类型使用:与数组有关的API
  8. [JavaScript]走进 JAVASCRIPT 黑洞
  9. oracle查看数据库字符编码,oracle 查看、批改字符集编码
  10. python 把一个字典赋值给一个空的字典,或者是列表赋值给一个空的列表显示黄色警告