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.pswp.cn/news/391776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391776.shtml
英文地址,請注明出處:http://en.pswp.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 …