數組-區間合并

一、題目描述

二、題目思路

這里提供滿足基本要求的解題思路:

1.先對列表內按照start大小升序排序,這里創建Comparator接口的實現類,重寫compare方法。

2.遍歷intervals,設置laststart、lastend兩個變量與當前區間相比較,合并公共空間,注意存在區間A包含區間B的情況。

3.在遍歷完成后,還要注意把 [laststart,lastend] 區間加到返回列表中。

三、代碼實現
import java.util.*;
/** public class Interval {*   int start;*   int end;*   public Interval(int start, int end) {*     this.start = start;*     this.end = end;*   }* }*/class CompareImpl implements Comparator<Interval> {//重寫比較方法,按照Interval.start排序,如果相等按照end排序@Overridepublic int compare(Interval inter1, Interval inter2) {if (inter1.start < inter2.start) {return -1;} else if (inter1.start == inter2.start) {if (inter1.end <= inter2.end) {return -1;} else {return 1;}} else {return 1;}}}public class Solution {/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可*** @param intervals Interval類ArrayList* @return Interval類ArrayList*/public ArrayList<Interval> merge (ArrayList<Interval> intervals) {// write code hereif (intervals.size() <= 1) {return intervals;}//首先對intervals進行排序intervals.sort(new CompareImpl());//遍歷intervals,合并公共空間ArrayList<Interval> resarr = new ArrayList<>(0);Iterator<Interval> intiv = intervals.iterator();int laststart = -1, lastend = -1;while (intiv.hasNext()) {Interval nowinterval = intiv.next();if (laststart == -1) { //當前集合不需要合并操作時laststart = nowinterval.start;lastend = nowinterval.end;} else {if (lastend >= nowinterval.start) {//這里合并時,除了 [[1,2],[2,3]] 還要注意測試用例 [[1,4],[2,3]] 的情況lastend=lastend<nowinterval.end?nowinterval.end:lastend;} else {Interval newinterval = new Interval(laststart, lastend);resarr.add(newinterval);//更新laststart和lastendlaststart=nowinterval.start;lastend=nowinterval.end;}}}//最后還需要把laststart和lastend區間加入到resarr中Interval newinterval = new Interval(laststart, lastend);resarr.add(newinterval);return resarr;}
}
四、刷題鏈接

合并區間_牛客題霸_牛客網

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

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

相關文章

Ansible實戰YAML語言完成apache的部署,配置,啟動全過程

&#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f3dd;?Ansible專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2024年5月24日15點59分 目錄 &#x1f4af;趣站推薦&#x1f4af; &#x1f38a;前言 ??YAML語言回顧 &#x1f386;1.編寫YAML文…

centos 安裝nginx 并配置https ssl

進入你要安裝的目錄 一般是/usr/local/ wget https://nginx.org/download/nginx-1.24.0.tar.gz解壓安裝包&#xff1a;使用以下命令解壓下載的Nginx安裝包&#xff1a; tar -zxvf nginx-1.24.0.tar.gz在編譯和安裝Nginx之前&#xff0c;確保您的系統上已安裝了必要的編譯工具和…

flume channel和interceptor簡介及官方用例

一、Flume Channels channel是在代理上暫存事件的存儲庫。Source 添加事件&#xff0c;Sink 將其刪除。 1、Memory Channel 事件存儲在具有可配置最大大小的內存中隊列中。它非常適合需要更高吞吐量的流&#xff0c;但在agent發生故障時會丟失暫存數據 Property Name Defau…

k近鄰和kd樹

K近鄰 選取k值的時候可以采用交叉驗證的方法 一般采用歐氏距離 kd樹 采用樹這個特殊的數據結構來實現k近鄰算法 先假設是二維的情況 下面講解kd樹的完整構造過程 找這個中位數是按照每棵子樹來創建的 前提是已經有了一棵kd樹,然后來一個實例點

java組合設計模式Composite Pattern

組合設計模式&#xff08;Composite Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許你將對象組合成樹形結構來表示“部分-整體”的層次結構。組合模式使得客戶端對單個對象和組合對象的使用具有一致性。 // Component - 圖形接口 interface Graphic {void draw()…

Python UDP編程簡單實例

TCP是建立可靠的連接&#xff0c;并且通信雙方都可以以流的形式發送數據。 相對于TCP&#xff0c;UDP則是面向無連接的協議&#xff0c;不需要建立連接&#xff0c;只需要知道對方IP地址和端口號&#xff0c;就可以直接發送數據包。但是只管發送不保證到達。 雖然UDP傳輸數據…

Docker快速部署Seata的TC服務以及微服務引入Seata教程

目錄 一、使用docker部署Seata的TC服務 1、拉取TC服務鏡像 2、創建并運行容器 ?3、修改配置文件 4、在Nacos中添加TC服務的配置 5、重啟TC服務 二、微服務集成Seata 1、引入依賴 2、修改配置文件 Seata是阿里的一個開源的分布式事務解決方案&#xff0c;能夠為分布…

STM32學習和實踐筆記(31):輸入捕獲實驗

1.輸入捕獲介紹 在定時器中斷實驗章節中我們介紹了通用定時器具有多種功能&#xff0c;輸入捕獲就是其中一種。STM32F1除了基本定時器TIM6和TIM7&#xff0c;其他定時器都具有輸入捕獲功能。輸入捕獲可以對輸入的信號的上升沿&#xff0c;下降沿或者雙邊沿進行捕獲&#xff0c;…

【博客主頁】博客主旨 精華

前言 與博客園不同, 最近CSDN在進行資本化的轉型.其一部分的VIP代碼和小冊我也有相關消費, 個人認為是一部分做的比較成過, 另一部分又不是特別成功. 其CSDN博客已經失去其原本技術交流的意義, 變成一種免費的知識引流和收費交流. 這其實與我們的開源社區背道而馳, 但是又吸引…

世界電信日 | 紫光展銳以科技創新支撐數字經濟可持續發展

專注科技創新&#xff0c;打造全球數字經濟技術基石 紫光展銳堅持科技創新,為數字經濟蓬勃發展提供基石力量。 面對5G-A技術的巨大潛力&#xff0c;紫光展銳與眾多生態伙伴緊密合作&#xff0c;積極推動5G-A的商用進程。紫光展銳提出的兩項R18 eRedCap演進方案已被3GPP標準采…

為什么要實現設備之間的互通?

設備之間的互通是電信設備的普遍性要求&#xff0c;特別是在接入網領域中&#xff0c;不同廠商的局端設備與用戶端&#xff08;終端&#xff09;設備之間的互通顯得尤其重要。 一、互通能為產業鏈的各個環節帶寬積極影響。 &#xff08;1&#xff09;對用戶而言&#xff0c;互…

安裝新版的Ubuntu WSL以使能BBR擁塞控制算法

【多次嘗試成功的方案】通過> wsl - -list -online列出可以安裝的版本&#xff0c;用命令> wsl --install -d Ubuntu-24.04 安裝。 【未成功的方案】通過掛在ubuntu24.04.iso到E盤后&#xff0c;用命令> wsl --import Ubuntu24.04 C:\WSL\Ubuntu24.04\ E:\ --versio…

Redis系統架構中各個處理模塊是干什么的?no.19

Redis 系統架構 通過前面的學習&#xff0c;相信你已經掌握了 Redis 的原理、數據類型及訪問協議等內容。本課時&#xff0c;我將進一步分析 Redis 的系統架構&#xff0c;重點講解 Redis 系統架構的事件處理機制、數據管理、功能擴展、系統擴展等內容。 事件處理機制 Redis…

API-BigInteger、BigDecimal

BigInteger&#xff1a; demo1: package BigInteger;import java.math.BigInteger; import java.util.Random;public class demo1 {public static void main(String[] args) {//獲取一個隨機最大整數BigInteger bd1 new BigInteger(5, new Random());System.out.println(bd1…

SSMP整合案例第一步 制作分析模塊創建與開發業務實體類

制作分析 我們要實現一個模塊的增刪改查 實際開發中mybatisplus用的不多&#xff0c;他只能對沒有外鍵的單表進行簡單的查詢 但在這個案例中我們還是選擇mybatisplus開發 模塊創建 我們把所有服務器都放在一起 就不用前后端分離 我們嘗試用后端開發進行全棧開發 新建項目添…

macos brew安裝多版本protobuf,切換指定版本protobuf 為默認版本方法

protobuf 不同的版本語法相差很大&#xff0c; 而在不同的項目中可能使用的protobuf版本也不同&#xff0c;所以我們的電腦就可能需要安裝多個版本的protobuf&#xff0c; 下面介紹macos下如何通過brew安裝多版本和設置想要的默認版本的方法 安裝&#xff0c;則可以先執行 bre…

Thinkphp3.2.3網站后臺不能訪問如何修復

我是使用Thinkphp3.2.3新搭建的PHP網站&#xff0c;但是網站前臺可以訪問&#xff0c;后臺訪問出現如圖錯誤&#xff1a; 由于我使用的Hostease的Linux虛擬主機產品默認帶普通用戶權限的cPanel面板&#xff0c;對于上述出現的問題不清楚如何處理&#xff0c;因此聯系Hostease的…

(3)醫療圖像處理:MRI磁共振成像-快速采集--(楊正漢)

目錄 一、磁共振快速采集技術基礎 1.K空間的基本特點 2.快速成像的理由&#xff1a; 3.快速成像的硬件要求&#xff1a; 二、磁共振快速采集技術 1.采集更少的相位編碼線 2.平行采集技術PAT 3.其他與快速采集有關的技術 1&#xff09;部分回波技術 2&#xff09;頻率…

java實現一個動態監控系統,監控接口請求超時的趨勢

目錄 整體思路案例實現1. 數據收集2. 數據聚合3. 趨勢分析4. 異常檢測5. 異常處理定時任務 整體思路 理想情況下&#xff0c;你可以實現一個簡單的動態監控算法來檢測渠道請求的響應時間趨勢&#xff0c;并在發現頻繁超時的情況下進行處理。以下是一個可能的算法框架&#xff…

Oracle表關聯更新幾種方法

1、測試表及數據準備 create table T_update01(ID int ,infoname varchar2(32),sys_guid varchar2(36)); create table T_update02(ID int ,infoname varchar2(32),sys_guid varchar2(36));insert into T_update01 select 1,N1_updateName,sys_guid() from dual union select …