【leetcode】Merge Intervals(hard)
Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].
思路:开始想用线段树,后来想想这个不是动态变化的没必要。
按区间的第一个值从小到大排序,然后跳过后面被覆盖的区间来找。
sort折腾了好久,开始搞不定只好自己写了一个归并排序。现在代码里的sort是可用的。
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
//mysort(intervals, 0, intervals.size() - 1);
sort(intervals.begin(), intervals.end(), comp);
vector<Interval> ans;
Interval tmp;
for(int i = ; i < intervals.size(); i++) //找每个连续的区间
{
tmp.start = intervals[i].start;
int curmaxend = intervals[i].end; //注意这里要记录当前区间最大的那个值 因为有可能[1,100],[2,3]这样前面最大值比后面大
while(i + < intervals.size() && curmaxend >= intervals[i + ].start)
{
curmaxend = (intervals[i + ].end > curmaxend) ? intervals[i + ].end : curmaxend;
i++;
}
tmp.end = curmaxend;
ans.push_back(tmp);
}
return ans;
}
void mysort(vector<Interval> &intervals, int s, int e)
{
if(s >= e) return;
int m = (s + e) / ;
mysort(intervals, s, m);
mysort(intervals, m + , e);
merge(intervals, s, m, e);
}
void merge(vector<Interval> &intervals, int s, int m, int e)
{
vector<Interval> left(intervals.begin() + s, intervals.begin() + m + );
vector<Interval> right(intervals.begin() + m + , intervals.begin() + e + );
int l = , r = , n = s;
while(l < left.size() && r < right.size())
{
intervals[n++] = (left[l].start < right[r].start) ? left[l++] : right[r++];
}
while(l < left.size())
{
intervals[n++] = left[l++];
}
while(r < right.size())
{
intervals[n++] = right[r++];
}
}
static bool comp(const Interval& a, const Interval& b){
return a.start < b.start;
}
};
【leetcode】Merge Intervals(hard)的更多相关文章
- 【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
Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given ...
- LeetCode: 56. Merge Intervals(Medium)
1. 原题链接 https://leetcode.com/problems/merge-intervals/description/ 2. 题目要求 给定一个Interval对象集合,然后对重叠的区域 ...
- 【leetcode】Reverse Integer(middle)☆
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 总结:处理整数溢出 ...
- 【leetcode】Happy Number(easy)
Write an algorithm to determine if a number is "happy". A happy number is a number defined ...
- 【leetcode】Reorder List (middle)
Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do thi ...
- 【leetcode】Word Break (middle)
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...
- 【leetcode】sort list(python)
链表的归并排序 超时的代码 class Solution: def merge(self, head1, head2): if head1 == None: return head2 if head2 ...
随机推荐
- POJ 1850 Code
组合数学.... Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7202 Accepted: 3361 Descrip ...
- Markdown 學習
Markdown 格式由John Gruber 創建,是一種便於閱讀,非常簡潔直觀的純文本文件格式,可以方便地轉為html等其他格式,很適合與寫作,不需要關注排版問題 常用學習資源有: ###標題用 ...
- hibernate中get,load,list,iterate的用法及比较
首先,get和load都是查询单个对象,而list和iterate为批量查询 注意以下写法仅针对hibernate3的语法. 使用案例如下: // 1. get和load 的用法 Person p = ...
- 71 mac boook pro 无 gpu 下caffe 安装
71 mac boook pro 无 gpu 下caffe 安装 1.首先安装homebrew工具,相当于Mac下的yum或apt ruby -e "$(curl -fsSL https:/ ...
- flexbox-CSS3弹性盒模型flexbox完整版教程
原文链接:http://caibaojian.com/flexbox-guide.html flexbox-CSS3弹性盒模型flexbox完整版教程 A-A+ 前端博客•2014-05-08•前端开 ...
- nginx反向代理、根据浏览器分离访问
环境根据http://www.cnblogs.com/zzzhfo/p/6032095.html配置 修改LB的/usr/local/nginx/conf/nginx.conf upstream st ...
- Knockout.Js案例一Introduction
</strong></p> <p>Last name: <strong data-bind="text:lastName ">tod ...
- java历史
1.产生: 1990年初sun公司James Gosling等员工开发java语言的雏形,最初被命名为Oak,定位于家用电器的控制和通讯,随后因为市场的需求,公司放弃计划,后面由于Internet的发 ...
- 关于JavaScript中的创建对象的学习总结
一.最简单的对象创建方法 在JavaScript中,直接使用Object构造函数或对象字面量都可以很轻易地创建单个对象,缺点是:创建具有同一个接口(标准的OO中的接口概念)的多个对象时,会有大量重复代 ...
- python 函数的文档字符串 docstrings
函数体的第一行可以是一个可选的字符串文本:此字符串是该函数的文档字符串,或称为docstring.(更多关于 docstrings 的内容可以在 文档字符串一节中找到.)有工具使用 docstring ...