Merge Intervals
来源:互联网 发布:学习软件 编辑:程序博客网 时间:2024/06/07 06:50
题目
原题
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].
思路
先排序后merge
code
/** * 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: static bool cmp(const Interval& a, const Interval& b) { /// here use '<' operator instead of '<=' operator /// othwise, 'time limit exceeded' or 'runtime error' occurs! /// i don't know why return a.start < b.start; } vector<Interval> merge(vector<Interval>& intervals) { int len = intervals.size(); if(len <= 1) return intervals; /// sort -- use static member funtion std::sort(intervals.begin(), intervals.end(), Solution::cmp); /// init vector<Interval> res; /// method1 Interval tmp = intervals[0]; for(int i = 1; i < len; i++) { if(tmp.end >= intervals[i].start) { tmp.end = max(tmp.end, intervals[i].end); } else { res.push_back(tmp); tmp.start = intervals[i].start; tmp.end = intervals[i].end; } } res.push_back(tmp); /// method 2 // res.push_back(intervals[0]); // for (int i = 1; i < intervals.size(); i++){ // if (res.back().end >= intervals[i].start){ // res.back().end = max(res.back().end, intervals[i].end); // }else{ // res.push_back(intervals[i]); // } // } return res; }};
0 0
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- merge intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- 数组中的逆序对(归并排序+剑指offer)
- 如何让onvif避开lighttpd的安全认证
- 雅虎开源的Kafka集群管理器(Kafka Manager)
- python安装pycrypto
- android 悬浮窗使用surfaceview的问题
- Merge Intervals
- VBS获得自身名字
- DateUtils所有时间函数
- 如何在考场上安排SAT考试时间
- git 的一些常用命令整理
- 【salesforce】Apexcodeで選択リスト型の値を取る
- CentOS-6.3安装配置JDK-7或 JDK-6
- android悬浮窗口的实现
- 函数申明对函数模板实例化的屏蔽