【LeetCode笔记】56. 合并区间(Java、排序)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】56. 合并区间(Java、排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 代碼 & 思路
- 更新版 2.0
題目描述
- 重疊區間:需要有重疊判斷
- 注意:題目并沒有說集合間有序,因此要先做一個排序,以左下標為排序值(否則會出錯
代碼 & 思路
- 經過排序后,只需要循環一次即可,從左到右:可以合并則合并,不能合并則添加當前數組到答案中,然后開啟新的數組繼續。
更新版 2.0
class Solution {public int[][] merge(int[][] intervals) {if(intervals == null || intervals.length <= 1) {return intervals;} List<int[]> list = new ArrayList<>();// 先排序 O(nlogN)Arrays.sort(intervals, (a, b) -> (a[0] - b[0]));// 時間復雜度 O(n),每次合并第 i ~ j 個區間for(int i = 0, j; i < intervals.length; i = j) {// 定義當前左、右區間int left = intervals[i][0];int right = intervals[i][1];j = i + 1;for(; j < intervals.length && right >= intervals[j][0]; j++) {// 維護右區間right = Math.max(right, intervals[j][1]);}list.add(new int[]{left, right});}return list.toArray(new int[list.size()][2]);} }- 去注釋最簡版
總結
以上是生活随笔為你收集整理的【LeetCode笔记】56. 合并区间(Java、排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysqlfor循环中出错继续_Pyth
- 下一篇: 【LeetCode笔记 - 每日一题】3