[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还没有发布,不得不 ...
随机推荐
- Spring常用注解用法总结
转自http://www.cnblogs.com/leskang/p/5445698.html 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由Dispat ...
- Python|花了一天,为大家整理的一套来自外国大佬的密码速查表
简单的HTTPS服务器 检查证书信息 输出 生成自签名证书 输出 准备一个签名注册请求 输出 生成无密码的RSA秘钥文件 用一个私钥给文件签名 输出 从签名验证一个文件 输出 通过pem文件做RSA加 ...
- 04-Mysql----初识sql语句
本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show create database ...
- 在阿里云上遇见更好的Oracle(二)
从上一篇文章的反馈来看,大家还是喜欢八卦多过技术细节,那这一篇继续一些题外话,说说我对“去IOE”的看法. 对同一件事情,参与的没参与的人,讨论起来,都会有各自的立场.所以这里先申明一下,以下内容只是 ...
- ardupilot_gazebo仿真(二)
ardupilot_gazebo仿真(二) 标签(空格分隔): 未分类 在模型中添加sensor gezebo官网-sensor部分教程 gezebo官网-基础部分教程 Gazebo plugins ...
- pexpect获取远端命令执行结果
类比于shell的expect, python中使用pexpect模块来模拟用户和终端交互.有的时候使用pexpect.sendline发送命令后,在各种条件影响下, 可能并不能保证命令在远端服务器执 ...
- Hyper-v创建检查点(VM的快照功能)
一. 问题描述 在Hyper的默认设置中没有创建检查点的功能,是因为他启用的并不是标准设置.设置检查点时会 二. 解决方法 再设置检查点就没问题了
- POJ 3565 Ants(最佳完美匹配)
Description Young naturalist Bill studies ants in school. His ants feed on plant-louses that live on ...
- 简明Python3教程 1.介绍
Python是少有的几种既强大又简单的编程语言.你将惊喜地发现通过使用Python即可轻松专注于解决问题而非和你所用的语言格式与结构. 下面是Python的官方介绍: Python is an eas ...
- multi-tap
multi-tap又称 multi-press . 是在手机,或者电视遥控上的keypad定义,有如下2类标准: 1. ITU-T E.161 2.T9 使用举例如下: Consider a typi ...