hot100_56. 合并區間

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

在這里插入圖片描述

數據結構

二維鏈表存儲每個區間

方法

先對每個區間的左邊界大小排序,(從左到右,依次比較a鏈表的右區間 和 其他鏈表的左區間)
判斷每個鏈表的左右邊界大小,
函數:a鏈表的右區間大于b鏈表的左區間,可以合并出:a鏈表的左區間,b鏈表的右區間。

我們用數組 merged 存儲最終的答案。
首先,我們將列表中的區間按照左端點升序排序。然后我們將第一個區間加入 merged 數組中,并按順序依次考慮之后的每個區間:
如果當前區間的左端點在數組 merged 中最后一個區間的右端點之后,那么它們不會重合,我們可以直接將這個區間加入數組 merged 的末尾;
否則,它們重合,我們需要用當前區間的右端點更新數組 merged 中最后一個區間的右端點,將其置為二者的較大值。

代碼java

class Solution {public int[][] merge(int[][] intervals) {if (intervals.length == 0){return new int[0][2];}Arrays.sort(intervals,new Comparator<int[]>(){public int compare(int[] interval1,int[] interval2){return interval1[0]-interval2[0];}});List<int[]> merged = new ArrayList<int[]>();for(int i=0;i<intervals.length;++i){int L = intervals[i][0],R = intervals[i][1];if(merged.size()==0 || merged.get(merged.size()-1)[1]<L){merged.add(new int[]{L,R});} else{merged.get(merged.size()-1)[1] = Math.max(merged.get(merged.size()-1)[1],R);}}return merged.toArray(new int[merged.size()][]);}
}

代碼python

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x:x[0])merged = []for interval in intervals:if not merged or merged[-1][1]<interval[0]:merged.append(interval)else:merged[-1][1] = max(merged[-1][1],interval[1])return merged

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

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

相關文章

Python大數據:基于Python的王者榮耀戰隊數據分析系統的設計與實現

系統展示 比賽信息管理 看板展示 系統管理 摘要 本文使用Python與MYSQL技術搭建了一個王者榮耀戰隊的數據分析系統。對用戶提出的功能進行合理分析&#xff0c;然后搭建開發平臺以及配置計算機軟硬件&#xff1b;通過對數據流圖以及系統結構的設計&#xff0c;創建相應的數據…

兩分鐘解決:vscode卡在設置SSH主機,VS Code-正在本地初始化VSCode服務器

問題原因 remote-ssh還是有一些bug的&#xff0c;在跟新之后可能會一直加載初始化SSH主機解決方案 1.打開終端2.登錄鏈接vscode的賬號&#xff0c;到家目錄下3.找到 .vscode-server文件,刪掉這個文件4.重啟 vscode 就沒問題了

深入理解與優化Java二維數組:從定義到性能提升的全面指南

1. 定義和初始化二維數組 在Java中&#xff0c;二維數組可以看作是數組的數組。你可以將它想象成一個矩陣或表格&#xff0c;每個元素是一個數組。 1.1 定義二維數組 二維數組的定義語法如下&#xff1a; datatype[][] arrayName;datatype 是數組元素的數據類型。arrayName…

day26 文件io

函數接口 1 .open和close 文件描述符&#xff1a;系統為用open打開的文件分配的標識符 非負的整形數據 0-1023 最小未被使用原則 使用完時及時釋放&#xff0c;避免文件描述符溢出 文件描述溢出就是文件使用完沒有及時關閉文件 int open(const char *pathname, int flags); /…

Java Stream流詳解——串行版

Stream流——串行版 ? Stream流是java8引入的特性&#xff0c;極大的方便了我們對于程序內數據的操作&#xff0c;提高了性能。通過函數式編程解決復雜問題。 1.BaseStream<T,S extense BaseStream<T,S>> ? 他是流處理的基石概念&#xff0c;重點不在于這個接…

el-backtop(返回頂部)

案例&#xff1a; <el-backtop target".app-main"><svg-icon icon-class"backtop" size"24px" /></el-backtop>

探秘“香水的 ChatGPT”:AI 開啟嗅覺奇幻之旅!

你沒有看錯&#xff0c;AI也能聞到味道了&#xff01;這是一家名為Osmo公司公布的信息&#xff0c;他們成功創造出了由AI生成的李子味道&#xff0c;快跟著小編一探究竟吧~ 【圖片來源于網絡&#xff0c;侵刪】 Osmo公司的這項技術&#xff0c;通過分析香味的化學成分和人類嗅…

Vue3入門(9)

1. 【 replace屬性】 作用&#xff1a;控制路由跳轉時操作瀏覽器歷史記錄的模式。 瀏覽器的歷史記錄有兩種寫入方式&#xff1a;分別為push和replace&#xff1a; - push是追加歷史記錄&#xff08;默認值&#xff09;。 - replace是替換當前記錄。 . 開啟replace模式&#xff…

第十九章 C++ 日期 時間

C 日期 & 時間 C 標準庫沒有提供所謂的日期類型。C 繼承了 C 語言用于日期和時間操作的結構和函數。為了使用日期和時間相關的函數和結構&#xff0c;需要在 C 程序中引用 <ctime> 頭文件。 有四個與時間相關的類型&#xff1a;clock_t、time_t、size_t 和 tm。類型…

電子配件行業的未來之路:產品說明書數字化轉型的力量

在科技飛速發展的今天&#xff0c;電子配件行業作為科技創新的前沿陣地&#xff0c;正經歷著前所未有的變革。從智能手機、平板電腦到智能穿戴設備&#xff0c;各種新型電子配件層出不窮&#xff0c;極大地豐富了人們的生活。然而&#xff0c;隨著產品種類的增多和功能的復雜化…

強化學習方法分類詳解

強化學習方法分類詳解 引言 強化學習&#xff08;Reinforcement Learning, RL&#xff09;是一種通過智能體與環境互動來學習如何做出最佳決策的方法。根據不同的優化中心、策略特性、環境模型、獎勵函數、動作空間類型以及行為策略和目標策略的一致性&#xff0c;RL可以分為…

RockyLinux介紹及初始化

文章目錄 一、背景二、下載 RockyLinux9 鏡像三、環境初始化四、安裝 Docker 環境 一、背景 這里講一個小故事&#xff1a; 我們都知道Linux 內核是由芬蘭計算機科學家林納斯托瓦茲 (Linus Torvalds) 于 1991 年首次開發的&#xff0c;隨后有一個非常重要的公司RetHat成立&am…

AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode和 桔子數據 的 價格對比

要對比 AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode 和 桔子數據 的 價格&#xff0c;我們需要先了解每個平臺的定價模型、服務類型以及不同服務之間的價格差異。以下是根據各個平臺常見服務&#xff08;如計算實例、存儲、數據傳輸等&#xff09;做的一個 簡化…

OpenCV相機標定與3D重建(36)計算兩幅圖像之間基本矩陣(Fundamental Matrix)的函數findFundamentalMat()的使用

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 從兩幅圖像中的對應點計算基本矩陣。 cv::findFundamentalMat 是 OpenCV 中用于計算兩幅圖像之間基本矩陣&#xff08;Fundamental Matrix&#…

Vscode + gdbserver遠程調試開發板指南:

本章目錄 步驟環境準備網絡配置vscode配置步驟 (全圖示例)開發板配置開始調試注意: 每次斷開之后&#xff0c;開發板都需要重新啟動gdbserver才可調試。 參考鏈接: 步驟 環境準備 將交叉編譯鏈路徑加入$PATH變量&#xff1a;確保系統能夠找到所需的工具。 export PATH$PATH:/p…

對外發PDF設置打開次數

在線 Host PDF 文件并對鏈接進行限制——保障文件安全的最佳解決方案 在數字化辦公和遠程協作日益普及的今天&#xff0c;如何安全高效地分享 PDF 文件成為許多用戶關注的重點。MaiPDF 作為一款功能強大的在線工具&#xff0c;不僅支持在線 host PDF 文件&#xff0c;還提供多…

VS2022 中的 /MT /MTd /MD /MDd 選項

我們有時編譯時,需要配置這個 運行庫,指定C/C++運行時庫的鏈接方式。 如下圖 那么這些選項的含義是什么? /MT:靜態鏈接多線程庫 /MT選項代表“Multi-threaded Static”,即多線程靜態庫。選擇此選項時,編譯器會從運行時庫中選擇多線程靜態連接庫來解釋程序中的代碼,…

MacOS下TestHubo安裝配置指南

TestHubo是一款開源免費的測試管理工具&#xff0c; 下面介紹MacOS私有部署的安裝與配置。TestHubo 私有部署版本更適合有嚴格數據安全要求的企業&#xff0c;支持在本地或專屬服務器上運行&#xff0c;以實現對數據和系統的完全控制。 1、Mac 服務端安裝 Mac安裝包下載地址&a…

Windows 11 配置gym、mujoco、mujoco-py環境教程

Windows 11 配置gym、mujoco、mujoco-py環境教程 整理了windows11系統安裝mujoco、mujoco_py、gym的教程以及報錯解決方法。 環境版本 mujoco-py-2.1.2.14 mujoco210 gym==0.23.1 python 3.9.16 pytorch 1.12.1+cu113 mujoco安裝 1. 在Github中下載mujoco210壓縮包 G…

Java重要面試名詞整理(五):Redis

文章目錄 Redis高級命令Redis持久化RDB快照&#xff08;snapshot&#xff09;**AOF&#xff08;append-only file&#xff09;****Redis 4.0 混合持久化** 管道&#xff08;Pipeline&#xff09;**StringRedisTemplate與RedisTemplate詳解**Redis集群方案gossip腦裂 Redis LuaR…