leetcode 697. 数组的度(hashmap)

给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。

你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。

示例 1:

输入:[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.

解题思路

关键找到出现次数最多的元素(可能多个),相同元素的头尾元素的距离就是与 nums 拥有相同大小的度的最短连续子数组,因为这个子数组保证涵盖到所有的出现次数最多的元素,拥有相同大小的度。
两个hashmap分别记录每个数字出现的次数和第一次出现的位置,用来维护出现频数和所能产生的子数组长度

代码

class Solution {public int findShortestSubArray(int[] nums) {int max=-1,res=Integer.MAX_VALUE;Map<Integer,Integer> map=new HashMap<>();Map<Integer,Integer> map2=new HashMap<>();for (int i = 0; i < nums.length; i++) {map.put(nums[i],map.getOrDefault(nums[i],0)+1);if(!map2.containsKey(nums[i])) map2.put(nums[i],i);int temp= i-map2.get(nums[i])+1;if(max==-1||map.get(nums[i])>map.get(max)||nums[i]==max||(map.get(nums[i])==map.get(max)&&temp<res))
//需要替换子数组的4种情况 1.最大频数还没初始化2.出现更大频数3.目前最大频数元素的子数组长度更新4.新元素的频数跟之前的最大频数相同,但是生成的子数组长度更短{res=temp; max=nums[i];}}return res;}
}

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

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

相关文章

facebook机器学习_如何为您的页面创建Facebook Messenger机器人

facebook机器学习by Paul Pinard保罗皮纳德(Paul Pinard) 如何为您的页面创建Facebook Messenger机器人 (How to create a Facebook messenger bot for your page) When it comes to sharing your chatbot, Facebook Messenger is a must. We created a very easy step-by-ste…

Logstash配置语法及相关命令

配置结构以及插件位置 输入插件&#xff1a; input{ … } 过滤插件&#xff1a; filter{ … } 输出插件&#xff1a; output{ … } 数据类型 - Array users > [{id > 1,name > N1},{id > 2,name > N2}] - lists path > ["/var/log/messages"…

面试整理

SpringMVC 和Struts2的区别 1. 机制&#xff1a; spring mvc的入口是servlet&#xff0c;而struts2是filter&#xff0c;这样就导致了二者的机制不同。 2. 性能&#xff1a; spring会稍微比struts快。spring mvc是基于方法的设计&#xff0c;而sturts 是基于类&#xff0c;…

Amazon Personalize:帮助释放精益数字业务的高级推荐解决方案的功能

By Gerd Wittchen盖德维琴 推荐解决方案的动机 (Motivation for recommendation solutions) Rapid changes in customer behaviour requires businesses to adapt at an ever increasing pace. The recent changes to our work and personal life has forced entire nations t…

Linux 链接文件讲解

链接文件是Linux文件系统的一个优势。如需要在系统上维护同一文件的两份或者多份副本&#xff0c;除了保存多份单独的物理文件之外&#xff0c;可以采用保留一份物理文件副本和多个虚拟副本的方式&#xff0c;这种虚拟的副本就成为链接。链接是目录中指向文件真实位置的占位符。…

系统滚动条实现的NUD控件Unusable版

昨天研究了一下系统滚动条&#xff0c;准备使用它来实现一个NumericUpDown控件&#xff0c;因为它可以带来最正宗的微调按钮外观&#xff0c;并说了一下可以使用viewport里的onScroll事件来获取系统滚动条的上下点击动作。 同时昨天还说了onScroll事件的一个问题是&#xf…

react 中渲染html_如何在React中识别和解决浪费的渲染

react 中渲染htmlby Nayeem Reza通过Nayeem Reza 如何在React中识别和解决浪费的渲染 (How to identify and resolve wasted renders in React) So, recently I was thinking about performance profiling of a react app that I was working on, and suddenly thought to set…

php变量的数据类型

一、类型 标量类型: 布尔型 整型 浮点型 字符串 复合类型: 数组 对象 特殊类型: 资源 null 1. 布尔型 true false 以下值认为是false 其他值都认为是true; 布尔值false 整型值0 浮点的0 空字符串和字符串0 空数组 空对象(只适用于php4) 特殊类型null 2. 整型 正整数和负整…

[习题].FindControl()方法 与 PlaceHolder控件 #2(动态加入「子控件」的事件)

这是我的文章备份&#xff0c;有空请到我的网站走走&#xff0c; http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息&#xff0c;谢谢您。 http://www.dotblogs.com.tw/mis2000lab/archive/2011/07/26/placeholder_findcontrol_eventhandler.aspx [习题].Fi…

西雅图治安_数据科学家对西雅图住宿业务的分析

西雅图治安介绍 (Introduction) Airbnb provides an online platform for hosts to accommodate guests with short-term lodging. Guests can search for lodging using filters such as lodging type, dates, location, and price, and can search for specific types of hom…

leetcode 1438. 绝对差不超过限制的最长连续子数组(滑动窗口+treemap)

给你一个整数数组 nums &#xff0c;和一个表示限制的整数 limit&#xff0c;请你返回最长连续子数组的长度&#xff0c;该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组&#xff0c;则返回 0 。 示例 1&#xff1a; 输入&#…

react-redux图解_如何将React连接到Redux —图解指南

react-redux图解by Princiya由Princiya 如何将React连接到Redux —图解指南 (How to connect React to Redux — a diagrammatic guide) This post is aimed at people who already know React and Redux. This will aid them in better understanding how things work under …

几种机器学习算法的优缺点

1决策树&#xff08;Decision Trees&#xff09;的优缺点 决策树的优点&#xff1a; 一、 决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。 二、 对于决策树&#xff0c;数据的准备往往是简单或者是不必要的.不需要预处理数据。…

【贪心】买卖股票的最佳时机含手续费

/** 贪心&#xff1a;每次选取更低的价格买入&#xff0c;遇到高于买入的价格就出售(此时不一定是最大收益)。* 使用buy表示买入股票的价格和手续费的和。遍历数组&#xff0c;如果后面的股票价格加上手续费* 小于buy&#xff0c;说明有更低的买入价格更新buy。如…

本科毕设论文——基于Kinect的拖拉机防撞系统

基于Kinect的拖拉机防撞系统电子信息科学与技术专业学生 sukeysun 摘要&#xff1a;随着智能车辆技术的发展&#xff0c;智能导航定位和实时车载监控等技术被更多的应用到日常生活照。在农业领域上&#xff0c;车辆自主感知道路环境并制定实时避障策略还存在不足&#xff0c;特…

排序算法Java代码实现(二)—— 冒泡排序

本篇内容&#xff1a; 冒泡排序冒泡排序 算法思想&#xff1a; 冒泡排序的原理是&#xff1a;从左到右&#xff0c;相邻元素进行比较。 每次比较一轮&#xff0c;就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 代码实现&#xff1a; /*** */ packag…

创意产品 分析_使用联合分析来发展创意

创意产品 分析Advertising finds itself in a tenacious spot these days serving two masters: creativity and data.如今&#xff0c;广告业处于一个顽强的位置&#xff0c;服务于两个大师&#xff1a;创造力和数据。 On the one hand, it values creativity; and it’s not…

leetcode 剑指 Offer 05. 替换空格

请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 示例 1&#xff1a; 输入&#xff1a;s “We are happy.” 输出&#xff1a;“We%20are%20happy.” 解题思路 一次遍历&#xff0c;检查空格&#xff0c;然后替换 代码 class Solution {publ…

两个富翁打赌_打赌您无法解决这个Google面试问题。

两个富翁打赌by Kevin Ghadyani通过凯文加迪亚尼(Kevin Ghadyani) 打赌您无法解决这个Google面试问题。 (Bet you can’t solve this Google interview question.) 将棘手的问题分解为小块。 (Breaking tough problems into small pieces.) I wanted to see someone else’s t…

vue.js 安装

写 一个小小的安装步骤 踩坑过来的 点击.然后安装cnpm.再接着使用文章说明继续安装 # 全局安装 vue-cli $ cnpm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project这时候一路空格 选项.当遇到第一个让你敲 Y/N 的时候 选择Y …