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的更多相关文章

  1. 【LeetCode】Merge Intervals 题解 利用Comparator进行排序

    题目链接Merge Intervals /** * Definition for an interval. * public class Interval { * int start; * int e ...

  2. 【leetcode】Merge Intervals

    Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given  ...

  3. 【leetcode】Merge Intervals(hard)

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  4. 【leetcode】 Merge Intervals

    Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given  ...

  5. leetcode 56. Merge Intervals 、57. Insert Interval

    56. Merge Intervals是一个无序的,需要将整体合并:57. Insert Interval是一个本身有序的且已经合并好的,需要将新的插入进这个已经合并好的然后合并成新的. 56. Me ...

  6. LeetCode 56. Merge Intervals (合并区间)

    Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

  7. LeetCode: 56. Merge Intervals(Medium)

    1. 原题链接 https://leetcode.com/problems/merge-intervals/description/ 2. 题目要求 给定一个Interval对象集合,然后对重叠的区域 ...

  8. Java for LeetCode 056 Merge Intervals

    Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...

  9. Leetcode#56 Merge Intervals

    原题地址 排序+合并,没啥好说的 第一次尝试C++的lambda表达式,有种写js的感觉,很神奇 c11就支持了lambda表达式,仔细想想,我学C++大概就是在09~10年,c11还没有发布,不得不 ...

随机推荐

  1. Zabbix_agentd 启动报错

    C:\zabbix>c:\Zabbix\zabbix_agentd.exe -i -c c:\Zabbix\zabbix_agentd.conf zabbix_agentd.exe [1144] ...

  2. vs code 代码格式化整理

    vs code格式化代码的快捷键如下:(来源于这里) On Windows Shift + Alt + F On Mac Shift + Option + F On Ubuntu Ctrl + Shi ...

  3. (转)Unreal Networking Guide Created by Zach Metcalf

        2. 3.                                                        

  4. GraphSAGE 代码解析(三) - aggregators.py

    原创文章-转载请注明出处哦.其他部分内容参见以下链接- GraphSAGE 代码解析(一) - unsupervised_train.py GraphSAGE 代码解析(二) - layers.py ...

  5. 软件工程项目组Z.XML会议记录 2013/11/20

    软件工程项目组Z.XML会议记录 [例会时间]2013年11月20日星期三21:00-22:00 [例会形式]小组讨论 [例会地点]学生公寓3号楼会客厅 [例会主持]李孟 [会议记录]李孟 会议整体流 ...

  6. python进制转换(二进制、十进制和十六进制)及注意事项

    使用内置函数实现进制转换实现比较简单,主要用到以下函数: bin().oct().int().hex() 下面分别详解一下各个函数的使用(附实例) 第一部分:其他进制转十进制 1.二进制转十进制 使用 ...

  7. 剑指offer:从头到尾打印链表

    目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:从头到尾打印链表 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 首先题目实际给出的要求是返回ve ...

  8. Alpha 冲刺5/10

    队名:我头发呢队 组长博客 杰(组长) 过去两天完成了哪些任务 继续翻阅Material Design2文档 翻阅网易云的web端网页 接下来的计划 音源爬取 还剩下哪些任务 app开发 燃尽图 有哪 ...

  9. Jquery 跨域请求JSON数据问题

    制作网站时,我们有时候为了方便快捷会调用别人写好的API接口,或者是调用一些免费的API接口获得JSON数据.比如天气,农历,网站备案信息查询等. 但是,这些API接口都是别人自己服务器上的,我们要调 ...

  10. 基于C#的PISDK研究(理论)

    本篇文章主要对PISDK体系结构以及重点类进行阐述. 当我们决定使用PISDK时,可能会使用到下面的类库: 在上表中,PISDK.dll为核心类,大部分主要功能都在该类中.PISDKCommon.dl ...