[LeetCode] 697. 数组的度(Java)

[LeetCode] 697. 数组的度(Java)

1.题目描述

给定一个非空且只包含非负数的整数数组 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 。

2.解题思路

遇事不决Hash表, 分析题意可以得出结论: 最短连续子数组的长度为最后出现的索引与最初出现的索引的差值+1, Hash结构为Map<Integer, int[]> map = new HashMap<Integer, int[]>();

3.解法

这里使用的是官方的解法,我自己想的是new两个hash表去记住值与索引,最后没做出来,看了眼官方的,哈哈哈.挺好

class Solution {public int findShortestSubArray(int[] nums) {Map<Integer, int[]> map = new HashMap<Integer, int[]>();int n = nums.length;for (int i = 0; i < n; i++) {if (map.containsKey(nums[i])) {map.get(nums[i])[0]++;map.get(nums[i])[2] = i;} else {map.put(nums[i], new int[]{1, i, i});}}int maxNum = 0, minLen = 0;for (Map.Entry<Integer, int[]> entry : map.entrySet()) {int[] arr = entry.getValue();if (maxNum < arr[0]) {maxNum = arr[0];minLen = arr[2] - arr[1] + 1;} else if (maxNum == arr[0]) {if (minLen > arr[2] - arr[1] + 1) {minLen = arr[2] - arr[1] + 1;}}}return minLen;}
}

5.技能点

思想不要固化; map是重点!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断输入的日期字符串是否小于当前日期

package com.wonders; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * 日期公共处理类 * author Liyongyong * */ public class DateUtils { /** * 判断是否是过去的日期 * para…

[LeetCode] 448. 找到所有数组中消失的数字(Java)

[LeetCode] 448. 找到所有数组中消失的数字(Java) 1.题目描述 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例 1&#xff1a;输入&#xf…

饥荒联机版连不上服务器_饥荒联机版无法连接klei服务器及刷不出服务器解决方法一览...

其实有时候连不上klei服务器和刷新不出服务器列表&#xff0c;是dns的问题。尤其一些三级宽带&#xff0c;像什么某城&#xff0c;某博士。就是被解析到了一个无法连通的服务器上。这时候换dns服务器&#xff0c;或者刷新dns缓存&#xff0c;直到找到一个能连通的服务器&#x…

Oracle12c部署,允许远程访问

Oracle的版本及类型&#xff1a;12c Oracle本地访问host为localhost&#xff0c;和其他关系型数据库mysql&#xff0c;sql server一样&#xff0c;Oracle远程访问同样需要修改host等参数。 因此&#xff0c;在部署Oracle前&#xff0c;需要确认的事只有一个&#xff1a;确保安…

renrenfast开源项目打包过程,前端使用vue element-UI,前后端分离,打包为一个jar包运行

项目使用的是renrenfast2.0 框架&#xff0c;后台springboot&#xff0c;前端vueelement-ui。项目本身有shiro拦截机制&#xff0c;需要放开static路径下文件&#xff0c;才可以访问。 步骤如下&#xff1a; 1.前端&#xff1a;npm run build (1)在dist目录下有3个文件&…

opencv对图像是软解码_C ++ OpenCV解码缓慢

I send a byte array of an image from C# to a C Library. I decode the image with OpenCV (Version 3.3.1) BMP images are fast in decoding but JPEG images are slow.How i can speed up the decoding time for JPEG images? (Multithreading, GPU, ...?)Performance o…

[算法] 原地哈希算法(Java)

[算法] 原地哈希算法(Java) 1.定义 原地哈希算法是指将原数组当成哈希表, 不开辟额外空间. 2.适用条件 原数组总所有数字范围都不超过数组长度, 也就是,给定一个数组nums, 原地哈希应用范围为[0, nums.length], 将数组元素本身作为nums的下标,也就是, nums[nums[i]]. 3.举…

[LeetCode] 442. 数组中重复的数据(Java)

[LeetCode] 442. 数组中重复的数据(Java) 1.题目描述 给你一个长度为 n 的整数数组 nums &#xff0c;其中 nums 的所有整数都在范围 [1, n] 内&#xff0c;且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数&#xff0c;并以数组形式返回。 你必须设计并实现一个…

python中的bs4怎么导入_在Python 3.5导入BS4

I have installed both Python 3.5 and Beautifulsoup4. When I try to import bs4, I get the error below. Is there any fix for that? Or should I just install Python 3.4 instead?Please be very explicit - I am new to programming. Many thanks!Traceback (most re…

通过stream去重_Java 8 Stream.distinct() 列表去重的操作

在这篇文章里,我们将提供Java8 Stream distinct()示例。 distinct()返回由该流的不同元素组成的流。distinct()是Stream接口的方法。 distinct()使用hashCode()和equals()方法来获取不同的元素。因此,我们的类必须实现hashCode()和equals()方法。 如果distinct()正在处理有序…

基于Java学院网页的搜索引擎设计和实现

项目运行部署&#xff1a; 首先导入项目MyHeritrix 然后把jar包加到项目中运行类Heritrix访问地址http://localhost:8080/index.jsp创建一个job 6.然后写name和你自己的url 7.然后修改modules&#xff0c;只需要修改select writes和select post processors 后面导入第二个程序…

[LeetCode] 41. 缺失的第一个正数(Java)

[LeetCode] 41. 缺失的第一个正数(Java) 1.题目描述 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a;输入&#xff1a;nums [1,2,0] 输出&#x…

基于java springboot+mybatis学生学科竞赛管理管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f…

[LeetCode] 274. H 指数(Java)

[LeetCode] 274. H 指数(Java) 1.题目描述 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数”&#xff0c;一名科研人员的 h指…

layui下拉框的高度_LAYUI select 下拉框得高度

UITextFieldUITextFieldDemo 效果 特点 1.有效定制键盘的样式 2.处理键盘对文本框的遮挡 用法 1.导入文件(UITextFieldCreateInputAccessoryView.h/.m) ...&lbrack;地图SkyLine二次开发&rsqb;关于IE内存限制问题&lpar;1G&rpar;相信很多人也遇到过同样的问题,地…

基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f…

[LeetCode] 453. 最小操作次数使数组元素相等(Java)

[LeetCode] 453. 最小操作次数使数组元素相等(Java) 1.题目描述 给你一个长度为 n 的整数数组&#xff0c;每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 示例 1&#xff1a;输入&#xff1a;nums [1,2,3] 输出&#xff1a;3 解释&#xff…

python打log_python根据文件大小打log日志

本文实例讲述了python根据文件大小打log日志的方法&#xff0c;分享给大家供大家参考。具体方法如下&#xff1a;import globimport loggingimport logging.handlerslog_filenamelogging_rotatingfile_example.out# set up a specific logger with our desired output levelmy_…

基于Java swing ATM简单的银行管理系统

项目介绍&#xff1a; 本项目是使用Java swing开发&#xff0c;可实现ATM系统/银行系统的基本登陆、转账、查询余额、存取款业务。界面设计比较简介 项目结构&#xff1a; 运行截图&#xff1a; 相关系统设计实现推荐&#xff1a; 基于java springbootmybatis电影售票网站管…