leetcode 1438. 絕對差不超過限制的最長連續子數組(滑動窗口+treemap)

給你一個整數數組 nums ,和一個表示限制的整數 limit,請你返回最長連續子數組的長度,該子數組中的任意兩個元素之間的絕對差必須小于或者等于 limit 。

如果不存在滿足條件的子數組,則返回 0 。

示例 1:

輸入:nums = [8,2,4,7], limit = 4
輸出:2
解釋:所有子數組如下:
[8] 最大絕對差 |8-8| = 0 <= 4.
[8,2] 最大絕對差 |8-2| = 6 > 4.
[8,2,4] 最大絕對差 |8-2| = 6 > 4.
[8,2,4,7] 最大絕對差 |8-2| = 6 > 4.
[2] 最大絕對差 |2-2| = 0 <= 4.
[2,4] 最大絕對差 |2-4| = 2 <= 4.
[2,4,7] 最大絕對差 |2-7| = 5 > 4.
[4] 最大絕對差 |4-4| = 0 <= 4.
[4,7] 最大絕對差 |4-7| = 3 <= 4.
[7] 最大絕對差 |7-7| = 0 <= 4.
因此,滿足題意的最長子數組的長度為 2 。

解題思路

利用treemap,在統計窗口元素個數的同時,對元素的大小進行排序,得出窗口內的最大值和最小值

代碼

class Solution {public int longestSubarray(int[] nums, int limit) {TreeMap<Integer,Integer> map=new TreeMap<>();int l=0,r=0,res=0;while (r<nums.length){map.put(nums[r],map.getOrDefault(nums[r],0)+1);while (Math.abs(map.firstKey()-map.lastKey())>limit){map.put(nums[l],map.get(nums[l])-1);if(map.get(nums[l])==0) map.remove(nums[l]);//該元素個數為0,則從窗口中移除l++;}res= Math.max(r-l+1,res);r++;}return res;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391765.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391765.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391765.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

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 …

Swift 的函數和閉包

函數的關鍵字是 func &#xff0c;函數定義的格式是&#xff1a; func funcName(para:paraType) -> returnType{// code } 復制代碼函數的參數標簽 其中參數的那部分的詳細結構是用小括號括起來&#xff0c;參數名&#xff0c;冒號&#xff0c;參數類型&#xff1a; (number…

pandas之表格樣式

在juoyter notebook中直接通過df輸出DataFrame時&#xff0c;顯示的樣式為表格樣式&#xff0c;通過sytle可對表格的樣式做一些定制&#xff0c;類似excel的條件格式。 df pd.DataFrame(np.random.rand(5,4),columns[A,B,C,D]) s df.style print(s,type(s)) #<pandas.io.f…

多層感知機 深度神經網絡_使用深度神經網絡和合同感知損失的能源產量預測...

多層感知機 深度神經網絡in collaboration with Hsu Chung Chuan, Lin Min Htoo, and Quah Jia Yong.與許忠傳&#xff0c;林敏濤和華佳勇合作。 1. Introduction1.簡介 Since the early 1990s, several countries, mostly in the European Union and North America, had sta…

ajax跨域

//遠程的地址1.通過header頭實現ajax跨域PHP文件的代碼$origin isset($_SERVER[HTTP_ORIGIN])? $_SERVER[HTTP_ORIGIN] : ; $allow_origin array(http://www.example.com, http://www.example2.com);if(in_array($origin, $allow_origin)){ header(Access-Control-Allow-Ori…

java線程并發庫之--線程同步工具CountDownLatch用法

CountDownLatch&#xff0c;一個同步輔助類&#xff0c;在完成一組正在其他線程中執行的操作之前&#xff0c;它允許一個或多個線程一直等待。 主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 構造方法…

leetcode 766. 托普利茨矩陣

給你一個 m x n 的矩陣 matrix 。如果這個矩陣是托普利茨矩陣&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 如果矩陣上每一條由左上到右下的對角線上的元素都相同&#xff0c;那么這個矩陣是 托普利茨矩陣 。 輸入&#xff1a;matrix [[1,2,3,4],[5,1,…

藍牙調試工具如何使用_使用此有價值的工具改進您的藍牙項目:第2部分!

藍牙調試工具如何使用This post is originally from www.jaredwolff.com. 這篇文章最初來自www.jaredwolff.com。 This is Part 2 of configuring your own Bluetooth Low Energy Service using a Nordic NRF52 series processor. If you haven’t seen Part 1 go back and ch…

gRPC快速入門記錄

為什么使用grpc 1.protocl buffer一種高效的序列化結構。 2.支持http 2.0標準化協議。 http/2 1.http/2對每個源只需創建一個持久連接&#xff0c;在這一個連接內&#xff0c;可以并行的處理多個請求和響應&#xff0c;而且做到不相互影響。 2.允許客戶端和服務端實現自己的數據…

微服務、分布式、云架構構建電子商務平臺

大型企業分布式微服務云架構服務組件 實現模塊化、微服務化、原子化、灰度發布、持續集成 分布式、微服務、云架構構建電子商務平臺 commonservice eureka Netflix事件、消息總線&#xff0c;用于在集群&#xff08;例如&#xff0c;配置變化事件&#xff09;中傳播狀態變化&am…

使用Matplotlib Numpy Pandas構想泰坦尼克號高潮

Did you know, a novel predicted the Titanic sinking 14 years previously to the actual disaster???您知道嗎&#xff0c;一本小說預言泰坦尼克號在14年前沉沒到了真正的災難中&#xff1f;&#xff1f;&#xff1f; In 1898 (14 years before the Titanic sank), Amer…

spark 架構_深入研究Spark內部和架構

spark 架構by Jayvardhan Reddy通過杰伊瓦爾丹雷迪(Jayvardhan Reddy) 深入研究Spark內部和架構 (Deep-dive into Spark internals and architecture) Apache Spark is an open-source distributed general-purpose cluster-computing framework. A spark application is a JV…