LeetCode[56]合并區間

難度:Medium

題目:

以數組?intervals?表示若干個區間的集合,其中單個區間為?intervals[i] = [starti, endi]?。請你合并所有重疊的區間,并返回?一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間?。


示例 1:

輸入:intervals = [[1,3],[2,6],[8,10],[15,18]]
輸出:[[1,6],[8,10],[15,18]]
解釋:區間 [1,3] 和 [2,6] 重疊, 將它們合并為 [1,6].

?示例 2:

輸入:intervals = [[1,4],[4,5]]
輸出:[[1,5]]
解釋:區間 [1,4] 和 [4,5] 可被視為重疊區間。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

Related Topics

  • 數組
  • 排序

重點!!!解題思路

第一步:

明確解題手段:使用排序算法是肯定的了,因為判斷區間是否是交集或者包含關系,需要比較前一個數組的第二個值和后一個數組的第一個值之間的關系,想要不考慮其他情況就這樣比較的話,我們需要先給整個二維數組排序,依據每個數組的第一個值進行排序。?

第二步:

依據每個數組的第一個值進行排序后,就可以依次進行比較,判斷數組中是交集還是包含關系了,具體代碼如下?

源碼+講解:

class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[0]-o2[0];}});  //排序int[][] res=new int[intervals.length][2];  //結果數組int ind=-1;  //模擬數組真實的大小for (int[] interval : intervals) {if (ind==-1 || interval[0]>res[ind][1]){  //當是第一個數組或者此時數組第一個值大于前一個數組的第二個值,說明數組不相交,之間添加到結果數組就可以res[++ind]=interval;}else{  //要不然就是說明數組相交,那么相交的結果就改變前一個數組的第二個值就可以res[ind][1]=Math.max(interval[1],res[ind][1]);}}return Arrays.copyOf(res,ind+1);  //copyOf方法是將數組的真實大小拷貝到新的數組進行返回,因為如果有交集那么肯定少返回一個,那么數組對應的位置就會是空集,這個方法避免了空集的存在}
}

?運行結果:

如果您還有什么疑問或解答有問題,可在下方評論,我會及時回復。

系列持續更新中,點個訂閱吧,喜歡練習算法那就點個攢吧?

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

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

相關文章

Android Studio Giraffe控制臺亂碼

這幾天在使用Android Studio Giraffe進行一個App的開發&#xff0c;在項目構建的時候&#xff0c;控制臺輸出中文都是亂碼&#xff0c;看著很不爽&#xff0c;進行了兩項配置&#xff0c;中文就可以正常輸出了&#xff0c;看起來就爽多了。 第一個配置&#xff1a;點擊Help菜單…

Redis對象和五種常用數據類型

Redisobject 對象 對象分為鍵對象和值對象 鍵對象一般是string類型 值對象可以是string&#xff0c;list&#xff0c;set,zset,hash q&#xff1a;redisobj的結構 typedef struct redisObject { //類型 unsigned type:4; //編碼 unsigned encoding:4; //指向底層實現…

webrtc Thread 和 TaskQueue 的 應用和思考

webrtc Thread 和 TaskQueue 的 應用和思考 Thread #include "rtc_base/thread.h"void FunctionToRunOnThread() {// Your threaded logic here.printf("Function running on the thread!\n"); }int main() {rtc::Thread* thread rtc::Thread::Create()…

WebService—XFire配置筆記

在學習之前,一直以為WebService就是一個工具,在兩個服務器之間建立一個通信,幫我們把需要傳輸的數據組織成規范的XML數據并發送到目的地,實際情況也確實是這樣的,不過更高級一點的是,XFire不但可以幫我們生成XML發送,而且可以在接收了xml之后還可以直接返回對象給我們用…

iptabels路由轉發

要配置iptables進行路由轉發&#xff0c;需要執行以下步驟&#xff1a; 確保系統已經開啟了IP轉發功能。可以通過執行以下命令來檢查&#xff1a; sysctl net.ipv4.ip_forward如果返回的值為1&#xff0c;表示已經開啟了IP轉發功能。如果返回的值為0&#xff0c;可以通過執行…

神經網絡基礎-神經網絡補充概念-29-為什么使用深層表示

概念 深層表示&#xff08;Deep Representation&#xff09;是指在深度神經網絡的多個隱藏層中逐層提取和學習數據的特征表示。 使用深層表示的原因 高維特征提取&#xff1a;深層神經網絡可以從原始數據中自動學習高維抽象特征。每個隱藏層都對數據進行一些變換&#xff0c…

“深入探索JVM內部機制:解密Java虛擬機的奧秘“

標題&#xff1a;深入探索JVM內部機制&#xff1a;解密Java虛擬機的奧秘 摘要&#xff1a;本文將深入探索Java虛擬機&#xff08;JVM&#xff09;的內部機制&#xff0c;介紹JVM的基本原理、運行時數據區域以及垃圾回收機制&#xff0c;并通過示例代碼解釋這些概念。 正文&am…

PG-DBA培訓14:PostgreSQL數據庫升級與遷移

一、風哥PG-DBA培訓14&#xff1a;PostgreSQL數據庫升級與遷移 課程目標&#xff1a; 本課程由風哥發布的基于PostgreSQL數據庫的系列課程&#xff0c;本課程屬于PostgreSQL備份恢復與遷移升級階段之PostgreSQL數據庫升級與遷移&#xff0c;學完本課程可以PostgreSQL數據庫升…

炒股票怎么加杠桿_融資融券賬戶怎么開通

炒股票作為一種投資方式&#xff0c;可以帶來不錯的回報。然而&#xff0c;對于那些希望以較小的資金獲得更高收益的投資者來說&#xff0c;加杠桿炒股票是一個值得考慮的選擇。本文將為您介紹加杠桿炒股票的意義&#xff0c;以及如何開通融資融券賬戶。 加杠桿炒股票的意義&a…

Centos8安裝docker并配置Kali Linux圖形化界面

鑒于目前網上沒有完整的好用的docker安裝kali桌面連接的教程&#xff0c;所以我想做一個。 準備工作 麻了&#xff0c;這服務器供應商提供的鏡像是真的純凈&#xff0c;純凈到啥都沒有。 問題一&#xff1a;Centos8源有問題 Error: Failed to download metadata for repo ap…

vue入門(增查改!)

<template><div><!-- 搜索欄 --><el-card id"search"><el-row><el-col :span"20"><el-input v-model"searchModel.name" placeholder"根據名字查詢"></el-input><el-input v-mode…

STM32 FLASH 讀寫數據

1. 《STM32 中文參考手冊》&#xff0c;需要查看芯片數據手冊&#xff0c;代碼起始地址一般都是0x8000 0000&#xff0c;這是存放整個項目代碼的起始地址 2. 編譯信息查看代碼大小&#xff0c;修改代碼后第一次編譯后會有這個提示信息 2.1 修改代碼后編譯&#xff0c;會有提示…

python3.73安裝教程,python3.10安裝教程

大家好&#xff0c;小編來為大家解答以下問題&#xff0c;python3.73安裝教程&#xff0c;python3.10安裝教程&#xff0c;現在讓我們一起來看看吧&#xff01; Python目前已支持所有主流操作系統&#xff0c;在Linux,Unix,Mac系統上自帶Python環境&#xff0c;一般默認裝的是P…

你敢信?代碼小白30min就能搭建一套酷炫級的駕駛艙!

大量研究結果表明&#xff0c;人類通過圖像獲取信息的速度比通過閱讀文字獲取信息的速度要快很多。 近幾年&#xff0c;數據可視化在企業中越發“流行”&#xff0c;將數字以可視化的形式展示&#xff0c;不僅清晰明了地展現企業真正的實力&#xff0c;也能讓管理者快速了解細節…

PG-DBA培訓12:PostgreSQL物理備份與恢復實戰

一、風哥PG-DBA培訓12&#xff1a;PostgreSQL物理備份與恢復實戰 課程目標&#xff1a; 本課程由風哥發布的基于PostgreSQL數據庫的系列課程&#xff0c;本課程屬于PostgreSQL備份恢復與遷移升級階段之PostgreSQL物理備份與恢復實戰&#xff0c;學完本課程可以掌握&#xff1…

Linux6.39 Kubernetes Pod控制器

文章目錄 計算機系統5G云計算第三章 LINUX Kubernetes Pod控制器一、Pod控制器及其功用二.pod控制器有多種類型1.ReplicaSet2.Deployment3.DaemonSet4.StatefulSet5.Cronjob 三、Pod與控制器之間的關系1.Deployment2.SatefulSet1&#xff09;為什么要有headless2&#xff09;為…

gulimall-緩存-緩存使用

文章目錄 前言一、本地緩存與分布式緩存1.1 使用緩存1.2 本地緩存1.3 本地模式在分布式下的問題1.4 分布式緩存 二、整合redis測試2.1 引入依賴2.2 配置信息2.3 測試 三、改造三級分類業務3.1 代碼改造 四、高并發下緩存失效問題4.1 緩存穿透4.2 緩存雪崩4.3 緩存擊穿 五、分布…

C++學習第十二天----指針

1.自動存儲&#xff0c;靜態存儲和動態存儲 c有3種管理數據內存的方式&#xff1a;自動存儲&#xff0c;靜態存儲和動態存儲&#xff08;有時也叫自由存儲空間或堆&#xff09;&#xff1b;C其實還有第4種類型----線程存儲&#xff1b; 第一&#xff0c;自動存儲&#xff0c;在…

Talk | ICCV‘23 HumanMAC:簡潔易拓展的人體動作預測新框架

? 本期為TechBeat人工智能社區第522期線上Talk&#xff01; 北京時間8月16日(周三)20:00&#xff0c;清華大學博士生—陳凌灝的Talk已準時在TechBeat人工智能社區開播&#xff01; 他與大家分享的主題是: “HumanMAC-簡潔易拓展的人體動作預測新框架”&#xff0c;介紹了人體動…

linux 學習————LNMP之分布式部署

目錄 一、概述 二、LNMP環境部署 三、配置nginx 四、 配置php使nginx能夠解析.php 五、配置mysql 六、配置discuz進行登錄論壇訪問測試 一、概述 LNMP代表 Linux、Nginx、MySQL、PHP&#xff0c;是一種常用的服務器架構。它由以下組件組成&#xff1a; Linux&#xff1a;作…