国产探花免费观看_亚洲丰满少妇自慰呻吟_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; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 增城市| 汝阳县| 阳曲县| 珲春市| 惠安县| 吴桥县| 全州县| 和静县| 阿鲁科尔沁旗| 乌拉特后旗| 繁峙县| 称多县| 赤壁市| 甘泉县| 东至县| 游戏| 巴塘县| 太原市| 南通市| 施秉县| 开化县| 库尔勒市| 大安市| 隆化县| 通州市| 大荔县| 肇庆市| 舞钢市| 新巴尔虎左旗| 苍山县| 乌鲁木齐县| 石河子市| 湘潭市| 长海县| 丹巴县| 格尔木市| 吴桥县| 吉木乃县| 张家口市| 阿城市| 吴堡县|