C語言題解Leetcode56合并區(qū)間實例
解題思路
題目鏈接 56. 合并區(qū)間
本質在于兩兩做對比,如果兩個區(qū)間,可以合并,則為結果二維數(shù)組中的一員,如果不可合并,則放入結果二維數(shù)組,所以根本在于,如何判斷兩個區(qū)間,是可合并,還是不可合并
1.首先將二維數(shù)組,按照左端元素進行排序
2.將第一個元素放入結果區(qū)間列表
3.如果當前區(qū)間的左端元素比結果區(qū)間列表最后一個區(qū)間右端元素小,則存在包含關系,此時只需更新右端元素即可 (更新為當前區(qū)間的右端元素與結果區(qū)間的右端元素的最大值)
4.如果不包含,則將當前區(qū)間加入結果區(qū)間列表,作為最后一個區(qū)間 5.輸出結果區(qū)間列表
解題遇到的問題
1.二維數(shù)組排序
2.二維數(shù)組在不知道大小時,如何初始化?
后續(xù)需要總結學習的知識點
- Arrays.copyOf源碼和使用方法總結
- 二維數(shù)組排序、重新compare
## 解法1 class Solution { public int[][] merge(int[][] intervals) { Arrays.sort(intervals, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[0] - o2[0]; } }); int index = 0; for (int i = 1; i < intervals.length; i++) { if (intervals[index][1] < intervals[i][0]) { index++; intervals[index][0] = intervals[i][0]; intervals[index][1] = intervals[i][1]; } else { intervals[index][1] = Math.max(intervals[i][1], intervals[index][1]); } } return Arrays.copyOf(intervals, index + 1); } }
以上就是C語言題解Leetcode56合并區(qū)間實例的詳細內(nèi)容,更多關于C語言 Leetcode合并區(qū)間的資料請關注腳本之家其它相關文章!
相關文章
Clion2020.2.x最新激活碼破解版附安裝教程(Mac Linux Windows)
Clion2020增加了很多新特性,修復了大量bug,大大提高了開發(fā)效率。這篇文章主要介紹了Clion2020.2.x最新激活碼破解版附安裝教程(Mac Linux Windows),需要的朋友可以參考下2020-11-11C++ LeetCode1945題解字符串轉化后的各位數(shù)字之和
這篇文章主要為大家介紹了C++ LeetCode1945題解字符串轉化后的各位數(shù)字之和示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12