LeetCode演算法打卡 區間問題

2021-09-27 04:32:34 字數 2054 閱讀 8120

57. 插入區間

給出乙個無重疊的 ,按照區間起始端點排序的區間列表。

在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。

/*基本思想:先找到要插入的區間的位置,拆入之後,區間合併

如果插入式頭,那就從後面判斷合併的區間,找後面的start大於插入區間end的位置(第乙個不重疊的),重疊合併,不重疊之間加入結果

如果是插入中間部分,從插入的位置從前找不重疊的部分加入結果,end> insert(vector>& intervals, vector& newinterval)

while( iintervals[j][1] ) //找到第乙個不重疊的區域

new_inter.push_back(intervals[j][0]); //重疊區域合併的start

intervals[i][1] = max(intervals[i][1],intervals[j][1]);

cout<=intervals.size())

while( j=intervals[j][0] ) //後面找第乙個不重疊的

new_inter.push_back(max(intervals[j-1][1],intervals[i][1])); //重疊區域合併找到合併的end

res.push_back(new_inter);

while(j=intervals[j][0] ) //找後面的start大於插入區間end的位置(第乙個不重疊的)

j++;

new_inter.push_back(intervals[i][0]); //插入的區間判斷合併

new_inter.push_back(max(intervals[j-1][1],intervals[i][1])); //重疊部分的end取最大的

res.push_back(new_inter);

while(j給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。

注意:可以認為區間的終點總是大於它的起點。

區間 [1,2] 和 [2,3] 的邊界相互「接觸」,但沒有相互重疊。

class solution

}return count;

}};

56. 合併區間

給出乙個區間的集合,請合併所有重疊的區間。

/*基本思想:兩種方法 都先把陣列按照開始值從小到大排序

方法二:直接遍歷比較,首先插入乙個區間,繼續插入的時候判斷是否重疊,重疊,更新剛插入的區間的end,否則插入新的區間,利用vector的back函式可以取到最後拆入的區間,直接比較更新就好

*/class solution

cur.push_back(end);

i=j;

res.push_back(cur);

}return res;

}*/vector> merge(vector>& intervals)

sort(intervals.begin(),intervals.end(),cmp);

res.push_back(intervals[0]);

for(int i=1;i986. 區間列表的交集

給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。

返回這兩個區間列表的交集。

(形式上,閉區間 [a, b](其中 a <= b)表示實數 x 的集合,而 a <= x <= b。兩個閉區間的交集是一組實數,要麼為空集,要麼為閉區間。例如,[1, 3] 和 [2, 4] 的交集為 [2, 3]。)

/*基本思路:思路1:以b為基準,a和b依次比較,當a的最大值大於b的最小值的時候,才有交集,求出交集排除異常情況即可

思路2: a和b同時移動比較,不滿**集條件的一方移動(每個集合都是有序的),滿足條件則判斷交集

*/class solution

else if(a[i][1]else if(a[i][1]else

}return vec;

}};

LeetCode演算法打卡

475.供暖器 冬季已經來臨。你的任務是設計乙個有固定加熱半徑的供暖器向所有房屋供暖。現在,給出位於一條水平線上的房屋和供暖器的位置,找到可以覆蓋所有房屋的最小加熱半徑。所以,你的輸入將會是房屋和供暖器的位置。你將輸出供暖器的最小加熱半徑。說明 給出的房屋和供暖器的數目是非負數且不會超過 25000...

LeetCode演算法打卡 動態規劃

62.不同路徑 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?基本思想 基本動態規劃思想 class solution void split st...

LeetCode演算法打卡 字串

28.實現 strstr 實現 strstr 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。基本思想 最簡單的就是對於needle來遍歷haystack i指向haystack...