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].

Show Tags

Array Sort

 

  这题其实想好思路很好解决,对于框,如果下个框开始在 其中间,则连在一起,否则单独为一个,这需要按start 排序便可以了,因为类中写自定义比较函数比较麻烦,所以一次写了好几个。
  1. 按start 排序
  2. 初始化变量curstart,curend,记录当前窗的位置。
  3. 与下个窗比较,如果其start < curend,更新 curend。
  4. 否则加入ret,并跟新curstart,curend
  5. 遍历结束,加入最后的窗。
 #include <iostream>
#include <vector>
#include <algorithm>
using namespace std; /**
* Definition for an interval.
*/
struct Interval {
int start;
int end;
Interval() : start(), end() {}
Interval(int s, int e) : start(s), end(e) {}
}; class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
sort(intervals.begin(),intervals.end(),\
[] (Interval i1,Interval i2)\
{return i1.start<i2.start; }); /// sort(intervals.begin(),intervals.end(),help_fun); /** struct my_cmp{
bool operator ()(Interval i1,Interval i2){
return i1.start<i2.start;
}
}my_cmp1;
sort(intervals.begin(),intervals.end(),my_cmp());
sort(intervals.begin(),intervals.end(),my_cmp1);
*/ // for(int i=0;i<intervals.size();i++){
// cout<<intervals[i].start<<" "<<intervals[i].end<<endl;
// }
vector<Interval> ret;
if(intervals.size()<) return ret;
int curStart=intervals[].start,curEnd=intervals[].end;
for(int i=;i<intervals.size();i++){
if(curEnd>=intervals[i].start){
if(intervals[i].end>curEnd) curEnd=intervals[i].end;
continue;
}
ret.push_back(Interval(curStart,curEnd));
curStart = intervals[i].start;
curEnd = intervals[i].end;
}
ret.push_back(Interval(curStart,curEnd));
return ret;
} static bool help_fun(Interval i1,Interval i2)
{
return i1.start<i2.start;
}
}; int main()
{
vector<Interval> intervals={Interval(,),\
Interval(,),\
Interval(,),\
Interval(,)};
Solution sol;
vector<Interval> ret = sol.merge(intervals); for(int i=;i<ret.size();i++){
cout<<ret[i].start<<" "<<ret[i].end<<endl;
}
return ;
}

[LeetCode] Merge Intervals 排序sort的更多相关文章

  1. [LeetCode] Merge Intervals 合并区间

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

  2. LeetCode: Merge Intervals 解题报告

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

  3. [leetcode]Merge Intervals @ Python

    原题地址:https://oj.leetcode.com/problems/merge-intervals/ 题意: Given a collection of intervals, merge al ...

  4. Leetcode Merge Intervals

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

  5. 56. Merge Intervals (Array; Sort)

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

  6. LeetCode() Merge Intervals 还是有问题,留待,脑袋疼。

    感觉有一点进步了,但是思路还是不够犀利. /** * Definition for an interval. * struct Interval { * int start; * int end; * ...

  7. 56[LeetCode] .Merge Intervals

    Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...

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

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

  9. 【题解】【区间】【二分查找】【Leetcode】Insert Interval & Merge Intervals

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

随机推荐

  1. 项目实战8.2-Linux下Tomcat开启查看GC信息

    本文收录在Linux运维企业架构实战系列 转自https://www.cnblogs.com/along21/ 一.开启GC日志 1.在Tomcat 的安装路径下,找到bin/catalina.sh  ...

  2. JavaScript(E5,6) 正则学习总结学习,可看可不看!

    1.概述 正则表达式(实例)是一种表达文本模式(即字符串结构)的方法. 创建方式有两种方式: 一种是使用字面量,以斜杠表示开始和结束. var regex = /xyz/ 另一种是使用RegExp构造 ...

  3. Database returned an invalid datetime value. Are time zone definitions for your database installed?

    在做文章归档的会后,打印结果时报了这个错误 ret = models.Article.objects.filter(user=user).annotate(month=TruncMonth('crea ...

  4. 爬虫工程师常用的 Chrome 插件

    做多了爬虫都知道,写一个爬虫大部分时间不是在代码上,而是在分析网页上,所有有一套好用的工具可以极大节省劳动力,这里把平时积累的一些 Chrome 插件分享出来,均来自本人和同事推荐,并不定时更新,欢迎 ...

  5. vue --子父组件传值

    1.父组件可以使用 props 把数据传给子组件. 2.子组件可以使用 $emit 触发父组件的自定义事件. vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( e ...

  6. User Account Control

    User Account Control 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! User Account Control (UAC : 用户帐户控制)是微软为 ...

  7. socketCluster 使用

    <html> <head> <title>test</title> <script src="https://cdn.bootcss.c ...

  8. 【 Sqrt(x) 】cpp

    题目: Implement int sqrt(int x). Compute and return the square root of x. 代码: class Solution { public: ...

  9. leetcode 【 Remove Element 】python 实现

    题目: Given an array and a value, remove all instances of that value in place and return the new lengt ...

  10. PHP 自定义二维码生成

    环境:PHP 7.*.* ,Composer 包管理工具.QrCode 效果如下: 使用 Composer 安装 QrCode QrCode 类库基于 php 的 GD 库,用于生成任意尺寸的二维码, ...