C語言題解Leetcode56合并區(qū)間實例
解題思路
題目鏈接 56. 合并區(qū)間
本質(zhì)在于兩兩做對比,如果兩個區(qū)間,可以合并,則為結(jié)果二維數(shù)組中的一員,如果不可合并,則放入結(jié)果二維數(shù)組,所以根本在于,如何判斷兩個區(qū)間,是可合并,還是不可合并
1.首先將二維數(shù)組,按照左端元素進行排序
2.將第一個元素放入結(jié)果區(qū)間列表
3.如果當(dāng)前區(qū)間的左端元素比結(jié)果區(qū)間列表最后一個區(qū)間右端元素小,則存在包含關(guān)系,此時只需更新右端元素即可 (更新為當(dāng)前區(qū)間的右端元素與結(jié)果區(qū)間的右端元素的最大值)
4.如果不包含,則將當(dāng)前區(qū)間加入結(jié)果區(qū)間列表,作為最后一個區(qū)間 5.輸出結(jié)果區(qū)間列表
解題遇到的問題
1.二維數(shù)組排序
2.二維數(shù)組在不知道大小時,如何初始化?
后續(xù)需要總結(jié)學(xué)習(xí)的知識點
- Arrays.copyOf源碼和使用方法總結(jié)
- 二維數(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)容,更多關(guān)于C語言 Leetcode合并區(qū)間的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
簡單談?wù)勱P(guān)于C++中大隨機數(shù)的問題
這篇文章主要介紹了關(guān)于C++中大隨機數(shù)的問題,文中給出了詳細的示例代碼,相信對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,有需要的朋友可以一起來學(xué)習(xí)學(xué)習(xí)。2017-01-01
Clion2020.2.x最新激活碼破解版附安裝教程(Mac Linux Windows)
Clion2020增加了很多新特性,修復(fù)了大量bug,大大提高了開發(fā)效率。這篇文章主要介紹了Clion2020.2.x最新激活碼破解版附安裝教程(Mac Linux Windows),需要的朋友可以參考下2020-11-11
C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和
這篇文章主要為大家介紹了C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12

