[抄题]:

Given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements.

Your task is to find the smallest possible length of a (contiguous) subarray of nums, that has the same degree as nums.

Example 1:

Input: [1, 2, 2, 3, 1]
Output: 2
Explanation:
The input array has a degree of 2 because both elements 1 and 2 appear twice.
Of the subarrays that have the same degree:
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
The shortest length is 2. So return 2.

Example 2:

Input: [1,2,2,3,1,4,2]
Output: 6

[暴力解法]:

时间分析:

空间分析:

[优化后]:

时间分析:

空间分析:

[奇葩输出条件]:

[奇葩corner case]:

[思维问题]:

读题不懂

[一句话思路]:

先统计,再比较

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

[一刷]:

  1. 数字一般初始化为整数中相反的最大或者最小值,忘了
  2. 忘了 检查key用的是containsKey方法

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

有很多指标,所以用多维数组+hashmap来实现

[复杂度]:Time complexity: O(n) Space complexity: O(n)

[英文数据结构或算法,为什么不用别的数据结构或算法]:

  1. 某数字 最大值的 最小覆盖范围, 有很多指标,所以用多维数组+hashmap来实现
  2. hashmap可以用for(: .values())冒号表达式把所有值取出来

[关键模板化代码]:

[其他解法]:

[Follow Up]:

[LC给出的题目变变变]:

[代码风格] :

put中直接写数值 不能再赋值,所以new int[]{直接跟数组即可}

class Solution {public int findShortestSubArray(int[] nums) {//ccif (nums == null || nums.length == 0) {return 0;}//iniHashMap<Integer, int[]> map = new HashMap<>();//collect into hashmapfor (int i = 0; i < nums.length; i++) {if (!map.containsKey(nums[i])) {map.put(nums[i], new int[]{1, i, i});//val, first index, last index}else {int temp[] = map.get(nums[i]);temp[0] += 1;temp[2] = i;map.put(nums[i], temp);}}//compare//bigger degree//same degree but smaller range//ini to the extremeint degree = Integer.MIN_VALUE;int result = Integer.MAX_VALUE;for (int[] val : map.values()) {if (val[0] > degree) {degree = val[0];result = val[2] - val[1] + 1;}else {if (val[0] == degree) {result = Math.min(result,  val[2] - val[1] + 1);}}}//returnreturn result;}
}

View Code

转载于:https://www.cnblogs.com/immiao0319/p/8875741.html

697. Degree of an Array 频率最高元素的最小覆盖子数组相关推荐

  1. leetcode 697 Degree of an Array

    题目详情 Given a non-empty array of non-negative integers nums, the degree of this array is defined as t ...

  2. C#LeetCode刷题之#697-数组的度( Degree of an Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3738 访问. 给定一个非空且只包含非负数的整数数组 nums, ...

  3. scala array 删除元素_Array中some介绍

    概念 Array.prototype.some方法测试数组中是不是至少有1个元素通过了被提供的函数测试.它返回的是一个Boolean类型的值. 语法 arr.some(callback(element ...

  4. Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度

    1. 创建一个 [3,5] 所有元素为 True 的数组 In [162]: b = np.ones((3,5), dtype=bool)In [163]: b Out[163]: array([[ ...

  5. php去除数组中的第一个元素,php如何删除数组的第一个元素和最后一个元素

    对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...

  6. Java黑皮书课后题第8章:*8.13(定位最大的元素)编写下面的方法,返回二维数组中最大元素的位置。返回值是包含两个元素的一维数组,这两个元素表示二维数组中最大元素的行下标和列下标

    *8.13(定位最大的元素)编写下面的方法,返回二维数组中最大元素的位置.返回值是包含两个元素的一维数组,这两个元素表示二维数组中最大元素的行下标和列下标 题目 题目描述与运行示例 破题 代码 题目 ...

  7. php 把一个数组分成有n个元素的二维数组的算法

    一.第一种解法 <?php //把一个数组分成几个数组//$arr 是数组//$num 是数组的个数function partition($arr,$num){//数组的个数$listcount ...

  8. 前端:JS/20/数组(数组的概念,数组元素,数组索引,数组元素的访问,数组的长度,数组的创建方法,数组的操作,实例:使用数组保存个人信息,实例:求数组所有值的平均值,数组对象的length属性)

    数组 1,数组的概念 一组值(或对象)的集合,称为"数组": var arr =[10,20,30,50]; var arr =["张三","男&qu ...

  9. python numpy 数组元素周围_Python numpy数组元素属性及访问

    文章目录 数组对象建立后,我们经常需要查看对象的一些属性特征以及访问或更改元素赋值. 首先我们建立一个数组: import numpy as np data1 = np.array([[1,2,3], ...

最新文章

  1. 李飞飞当选美国医学科学院院士!用AI照亮医疗黑暗空间
  2. ListView数据项隔行换色控制实现详解
  3. 谷歌最新双塔DNN召回模型——应用于YouTube大规模视频推荐场景
  4. ios wkweb设置图片_iOS WKWebView (NSURLProtocol)拦截js、css,图片资源
  5. hdu3555 Bomb 数位dp
  6. 设计灵感在哪里?集设网海纳百川,智慧的聚集地
  7. macbook linux 双系统,mac上安装ubuntu双系统教程
  8. 金融分析(三)------联合分布,边缘分布,条件概率密度
  9. centos静态ip天坑
  10. 安全须知 百数返校登记助力校园防控工作
  11. 鸿蒙OS平板界面,华为鸿蒙OS平板操作界面曝光,华为MatePad Pro2,搭载麒麟9000
  12. spa 搜索引擎_夜场SPA搜索引擎收录排名,持久排名
  13. javascript彩色喷泉
  14. 统计学——小样本容量置信区间
  15. 画春天的景色计算机教案,幼儿园春天主题教案:画春天
  16. IDEA下Git标签使用
  17. UR机器人(3)-精确设定TCP以及有效负载
  18. PHPEclipse搭建PHP开发环境
  19. iNFTnews丨阿迪达斯、汇丰银行等入驻的沙盒元宇宙土地该如何估价?
  20. Linux程序设计:一、入门,文件系统介绍

热门文章

  1. C# 移除最后一个字符
  2. 实现小数据量和海量数据的通用分页显示存储过程
  3. HDU OJ Super Jumping! Jumping! Jumping!
  4. groovy 兼容 java,升级Groovy 1.7 - 2.1不兼容
  5. php判断日期为空值,php判断值是否为空实例代码
  6. 卸载Win10+ubuntu14双系统中的ubuntu系统
  7. C++中拼接一个包含整型等类型字符串的方法
  8. OpenStack Neutron浅析(三)
  9. 计算机基础知识应用文档,计算机基础知识与应用
  10. chkdsk 检查卷位图时发现损坏_活塞连杆组的分解与组装、活塞环的检查