[Leetcode Week2]Merge Intervals
Merge Intervals题解
原创文章,拒绝转载
题目来源:https://leetcode.com/problems/merge-intervals/description/
Description
Given a collection of intervals, merge all overlapping intervals.
Example
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].
Solution
/* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
vector<Interval> resultVector;
if (intervals.size() == 0)
return resultVector;
int size = intervals.size();
int i, j, rsize;
resultVector.push_back(intervals[0]);
Interval tempInterval;
bool is_finish;
for (i = 1; i < size; i++) {
tempInterval.start = intervals[i].start;
tempInterval.end = intervals[i].end;
is_finish = false;
while (!is_finish) {
if (resultVector.size() == 0) {
resultVector.push_back(tempInterval);
break;
}
for (j = 0; j < resultVector.size(); j++) {
if ( (tempInterval.end >= resultVector[j].start && tempInterval.end <= resultVector[j].end) ||
(tempInterval.start >= resultVector[j].start && tempInterval.start <= resultVector[j].end) ||
(tempInterval.start <= resultVector[j].start && tempInterval.end >= resultVector[j].end)) {
tempInterval.start = tempInterval.start < resultVector[j].start ? tempInterval.start : resultVector[j].start;
tempInterval.end = tempInterval.end > resultVector[j].end ? tempInterval.end : resultVector[j].end;
resultVector.erase(resultVector.begin() + j);
break;
}
if (j == resultVector.size() - 1) {
resultVector.push_back(tempInterval);
is_finish = true;
break;
}
}
}
}
return resultVector;
}
};
解题描述
这道题还是费了一番周折去解决的。可能一开始的想法就是不想使用暴力破解的方法,想试着看看在解决问题的过程中就实现优化,减少遍历次数,但是却弄巧成拙出了些莫名奇妙的bug,一度WA好几次。最后还是妥协了,“先做到,再做好”,使用暴力破解,也就是通过不断更新即将插入结果容器的区间的上下界,每次更新完再重复遍历结果容器,以达到完全排除区间有交叠的情况。
[Leetcode Week2]Merge Intervals的更多相关文章
- 【LeetCode】Merge Intervals 题解 利用Comparator进行排序
题目链接Merge Intervals /** * Definition for an interval. * public class Interval { * int start; * int e ...
- 【leetcode】Merge Intervals
Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given ...
- 【leetcode】Merge Intervals(hard)
Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...
- 【leetcode】 Merge Intervals
Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given ...
- leetcode 56. Merge Intervals 、57. Insert Interval
56. Merge Intervals是一个无序的,需要将整体合并:57. Insert Interval是一个本身有序的且已经合并好的,需要将新的插入进这个已经合并好的然后合并成新的. 56. Me ...
- LeetCode 56. Merge Intervals (合并区间)
Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...
- LeetCode: 56. Merge Intervals(Medium)
1. 原题链接 https://leetcode.com/problems/merge-intervals/description/ 2. 题目要求 给定一个Interval对象集合,然后对重叠的区域 ...
- Java for LeetCode 056 Merge Intervals
Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...
- Leetcode#56 Merge Intervals
原题地址 排序+合并,没啥好说的 第一次尝试C++的lambda表达式,有种写js的感觉,很神奇 c11就支持了lambda表达式,仔细想想,我学C++大概就是在09~10年,c11还没有发布,不得不 ...
随机推荐
- Zabbix_agentd 启动报错
C:\zabbix>c:\Zabbix\zabbix_agentd.exe -i -c c:\Zabbix\zabbix_agentd.conf zabbix_agentd.exe [1144] ...
- vs code 代码格式化整理
vs code格式化代码的快捷键如下:(来源于这里) On Windows Shift + Alt + F On Mac Shift + Option + F On Ubuntu Ctrl + Shi ...
- (转)Unreal Networking Guide Created by Zach Metcalf
2. 3.
- GraphSAGE 代码解析(三) - aggregators.py
原创文章-转载请注明出处哦.其他部分内容参见以下链接- GraphSAGE 代码解析(一) - unsupervised_train.py GraphSAGE 代码解析(二) - layers.py ...
- 软件工程项目组Z.XML会议记录 2013/11/20
软件工程项目组Z.XML会议记录 [例会时间]2013年11月20日星期三21:00-22:00 [例会形式]小组讨论 [例会地点]学生公寓3号楼会客厅 [例会主持]李孟 [会议记录]李孟 会议整体流 ...
- python进制转换(二进制、十进制和十六进制)及注意事项
使用内置函数实现进制转换实现比较简单,主要用到以下函数: bin().oct().int().hex() 下面分别详解一下各个函数的使用(附实例) 第一部分:其他进制转十进制 1.二进制转十进制 使用 ...
- 剑指offer:从头到尾打印链表
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:从头到尾打印链表 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 首先题目实际给出的要求是返回ve ...
- Alpha 冲刺5/10
队名:我头发呢队 组长博客 杰(组长) 过去两天完成了哪些任务 继续翻阅Material Design2文档 翻阅网易云的web端网页 接下来的计划 音源爬取 还剩下哪些任务 app开发 燃尽图 有哪 ...
- Jquery 跨域请求JSON数据问题
制作网站时,我们有时候为了方便快捷会调用别人写好的API接口,或者是调用一些免费的API接口获得JSON数据.比如天气,农历,网站备案信息查询等. 但是,这些API接口都是别人自己服务器上的,我们要调 ...
- 基于C#的PISDK研究(理论)
本篇文章主要对PISDK体系结构以及重点类进行阐述. 当我们决定使用PISDK时,可能会使用到下面的类库: 在上表中,PISDK.dll为核心类,大部分主要功能都在该类中.PISDKCommon.dl ...