国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Leetcode 56 - Merge Intervals(區間合并)

2019-11-08 02:18:53
字體:
來源:轉載
供稿:網友

github倉庫:https://github.com/lzed/leetcode

題意

給定若干個區間,合并這些區間。

思路

算法1

先將區間排序,然后每次選定一個區間i,遍歷之后的區間j,找到最后一個能夠合并的區間后,合并。然后區間的起點的i跳轉到j + 1。

算法2

假如我們現在結果ans里面已經有一些區間了,最后一個區間為x(x.end一定是ans里面最大的)。

對于下一個區間y,如果y.start <= x.end,說明能夠和x重合,我們將x.end更新為max(x.end, y.end)

如果不滿足能夠重合,說明是一個新的區間,然后放到結果里面去就好。

代碼

algorithm 1

bool cmp(Interval& a, Interval& b) { return a.start == b.start ? a.end < b.end : a.start < b.start;}class Solution {public: vector<Interval> merge(vector<Interval>& a) { sort(a.begin(), a.end(), cmp); vector<Interval> ans; int n = a.size(); for (int i = 0; i < n;) { int ed = a[i].end, j = i + 1; for (; j < n; j++) { if (a[j].start <= ed) ed = max(ed, a[j].end); else {j--; break;} } ans.push_back(Interval(a[i].start, ed)); i = j + 1; } return ans; }};

algorithm 2

bool cmp(Interval& a, Interval& b) { return a.start == b.start ? a.end < b.end : a.start < b.start;}class Solution {public: vector<Interval> merge(vector<Interval>& a) { sort(a.begin(), a.end(), cmp); vector<Interval> ans; int n = a.size(); if (n) { ans.push_back(a[0]); for (int i = 1; i < n; i++) { if (a[i].start <= ans.back().end) ans.back().end = max(ans.back().end, a[i].end); else ans.push_back(a[i]); } } return ans; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太湖县| 遵义市| 天津市| 墨脱县| 汉中市| 永定县| 平利县| 利辛县| 慈利县| 台南市| 靖宇县| 铜梁县| 正镶白旗| 成武县| 海南省| 宁武县| 南靖县| 隆回县| 茂名市| 武陟县| 庐江县| 东明县| 扶余县| 六枝特区| 万州区| 江都市| 灵丘县| 雷山县| 湘潭县| 鄂尔多斯市| 普兰店市| 乐都县| 马鞍山市| 青河县| 治县。| 绥德县| 眉山市| 富源县| 仙桃市| 湖南省| 乌拉特前旗|