697. Degree of an Array 频率最高元素的最小覆盖子数组
[抄题]:
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]:
[思维问题]:
读题不懂
[一句话思路]:
先统计,再比较
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
- 数字一般初始化为整数中相反的最大或者最小值,忘了
- 忘了 检查key用的是containsKey方法
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
有很多指标,所以用多维数组+hashmap来实现
[复杂度]:Time complexity: O(n) Space complexity: O(n)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
- 某数字 最大值的 最小覆盖范围, 有很多指标,所以用多维数组+hashmap来实现
- 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 频率最高元素的最小覆盖子数组相关推荐
- 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 ...
- C#LeetCode刷题之#697-数组的度( Degree of an Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3738 访问. 给定一个非空且只包含非负数的整数数组 nums, ...
- scala array 删除元素_Array中some介绍
概念 Array.prototype.some方法测试数组中是不是至少有1个元素通过了被提供的函数测试.它返回的是一个Boolean类型的值. 语法 arr.some(callback(element ...
- Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度
1. 创建一个 [3,5] 所有元素为 True 的数组 In [162]: b = np.ones((3,5), dtype=bool)In [163]: b Out[163]: array([[ ...
- php去除数组中的第一个元素,php如何删除数组的第一个元素和最后一个元素
对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...
- Java黑皮书课后题第8章:*8.13(定位最大的元素)编写下面的方法,返回二维数组中最大元素的位置。返回值是包含两个元素的一维数组,这两个元素表示二维数组中最大元素的行下标和列下标
*8.13(定位最大的元素)编写下面的方法,返回二维数组中最大元素的位置.返回值是包含两个元素的一维数组,这两个元素表示二维数组中最大元素的行下标和列下标 题目 题目描述与运行示例 破题 代码 题目 ...
- php 把一个数组分成有n个元素的二维数组的算法
一.第一种解法 <?php //把一个数组分成几个数组//$arr 是数组//$num 是数组的个数function partition($arr,$num){//数组的个数$listcount ...
- 前端:JS/20/数组(数组的概念,数组元素,数组索引,数组元素的访问,数组的长度,数组的创建方法,数组的操作,实例:使用数组保存个人信息,实例:求数组所有值的平均值,数组对象的length属性)
数组 1,数组的概念 一组值(或对象)的集合,称为"数组": var arr =[10,20,30,50]; var arr =["张三","男&qu ...
- python numpy 数组元素周围_Python numpy数组元素属性及访问
文章目录 数组对象建立后,我们经常需要查看对象的一些属性特征以及访问或更改元素赋值. 首先我们建立一个数组: import numpy as np data1 = np.array([[1,2,3], ...
最新文章
- 李飞飞当选美国医学科学院院士!用AI照亮医疗黑暗空间
- ListView数据项隔行换色控制实现详解
- 谷歌最新双塔DNN召回模型——应用于YouTube大规模视频推荐场景
- ios wkweb设置图片_iOS WKWebView (NSURLProtocol)拦截js、css,图片资源
- hdu3555 Bomb 数位dp
- 设计灵感在哪里?集设网海纳百川,智慧的聚集地
- macbook linux 双系统,mac上安装ubuntu双系统教程
- 金融分析(三)------联合分布,边缘分布,条件概率密度
- centos静态ip天坑
- 安全须知 百数返校登记助力校园防控工作
- 鸿蒙OS平板界面,华为鸿蒙OS平板操作界面曝光,华为MatePad Pro2,搭载麒麟9000
- spa 搜索引擎_夜场SPA搜索引擎收录排名,持久排名
- javascript彩色喷泉
- 统计学——小样本容量置信区间
- 画春天的景色计算机教案,幼儿园春天主题教案:画春天
- IDEA下Git标签使用
- UR机器人(3)-精确设定TCP以及有效负载
- PHPEclipse搭建PHP开发环境
- iNFTnews丨阿迪达斯、汇丰银行等入驻的沙盒元宇宙土地该如何估价?
- Linux程序设计:一、入门,文件系统介绍
热门文章
- C# 移除最后一个字符
- 实现小数据量和海量数据的通用分页显示存储过程
- HDU OJ Super Jumping! Jumping! Jumping!
- groovy 兼容 java,升级Groovy 1.7 - 2.1不兼容
- php判断日期为空值,php判断值是否为空实例代码
- 卸载Win10+ubuntu14双系统中的ubuntu系统
- C++中拼接一个包含整型等类型字符串的方法
- OpenStack Neutron浅析(三)
- 计算机基础知识应用文档,计算机基础知识与应用
- chkdsk 检查卷位图时发现损坏_活塞连杆组的分解与组装、活塞环的检查