iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
佛心分享-刷題不只是刷題

刷題筆記系列 第 19

[Day19] Patterns: Merge Intervals

  • 分享至 

  • xImage
  •  

Merge Intervals(合併區間)是一種處理重疊區間的解題技巧。在大部分與Merge Intervals的問題中,題目可能會要求以下作兩種處理:

  1. 需要找到重疊的區間
  2. 在區間重疊時,將區間合併。

那麼,談到區間,基本上區間會有以下六種組合情況的可能:
第一種: a 和 b 不重疊,a 開始、b 結束
https://ithelp.ithome.com.tw/upload/images/20240831/201686675G5ci52EVK.png
第二種: a 和 b 重疊,a 開始、b 結束
https://ithelp.ithome.com.tw/upload/images/20240831/201686678BylJnylsr.png
第三種: a 和 b 重疊,a 完全覆蓋 b
https://ithelp.ithome.com.tw/upload/images/20240831/20168667v1B6aMOPgi.png
第四種: a 和 b 重疊,b 開始、a 結束
https://ithelp.ithome.com.tw/upload/images/20240831/20168667yGKMtZF096.png
第五種: a 和 b 重疊,b 完全覆蓋 a
https://ithelp.ithome.com.tw/upload/images/20240831/20168667jJRUKIuvGe.png
第六種: a 和 b 不重疊,b 開始、a 結束
https://ithelp.ithome.com.tw/upload/images/20240831/20168667cqXHRemnaf.png

遇到需要處理區間問題的題目時,可以先將區間可能的排列情形先列出,基本上只會有以上六種,剩下就看題目出的是哪一種了。

那要如何識別什麼時候要使用Merge Intervals(合併區間)的技巧呢?

  1. 如果你被要求回傳一個只有互斥區間的列表
  2. 如果你看到關鍵字"重疊區間(Overlapping intervals)"

Merge Intervals(合併區間)的步驟

  1. 排列所有區間: 先根據區間的起始時間對各個區間進行排序。
  2. 初始化: 新增一個 陣列mergedIntervals,用來儲存合併後的區間。在完成上面第一步後,把第一個排序的區間放進 陣列mergedIntervals 中。
  3. 迭代與合併: 從第二個區間開始,遍歷已排序的區間。對於每個區間,比較他們的起始時間與 陣列mergedIntervals 中最後一個區間的結束時間。如果有重疊,則更新 陣列mergedIntervals 中最後一個區間的結束時間。否則,將新的區間加入 陣列mergedIntervals 中。

遍歷結束後,就可以回傳 陣列mergedIntervals了,裡面將會是包含所有合併後的區間囉!

Reference:
https://hackernoon.com/14-patterns-to-ace-any-coding-interview-question-c5bb3357f6ed


上一篇
[Day18] K Closest Points to Origin
下一篇
[Day20] Merge Intervals
系列文
刷題筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言