[LeetCode] Merge Intervals 排序sort
这题其实想好思路很好解决,对于框,如果下个框开始在 其中间,则连在一起,否则单独为一个,这需要按start 排序便可以了,因为类中写自定义比较函数比较麻烦,所以一次写了好几个。
- 按start 排序
- 初始化变量curstart,curend,记录当前窗的位置。
- 与下个窗比较,如果其start < curend,更新 curend。
- 否则加入ret,并跟新curstart,curend
- 遍历结束,加入最后的窗。
#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的更多相关文章
- [LeetCode] Merge Intervals 合并区间
Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...
- LeetCode: Merge Intervals 解题报告
Merge IntervalsGiven a collection of intervals, merge all overlapping intervals. For example,Given [ ...
- [leetcode]Merge Intervals @ Python
原题地址:https://oj.leetcode.com/problems/merge-intervals/ 题意: Given a collection of intervals, merge al ...
- Leetcode Merge Intervals
Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...
- 56. Merge Intervals (Array; Sort)
Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...
- LeetCode() Merge Intervals 还是有问题,留待,脑袋疼。
感觉有一点进步了,但是思路还是不够犀利. /** * Definition for an interval. * struct Interval { * int start; * int end; * ...
- 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 ...
- 【LeetCode】Merge Intervals 题解 利用Comparator进行排序
题目链接Merge Intervals /** * Definition for an interval. * public class Interval { * int start; * int e ...
- 【题解】【区间】【二分查找】【Leetcode】Insert Interval & Merge Intervals
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
随机推荐
- 第三篇:彻底解决ssh.invoke_shell() 返回的中文问题
接上一篇,前两篇解决中文的问题主要是在字符集上做的手脚,即将中文转成英文,但是有一种情况我们都来不及做转换,即登录时服务器直接返回了中文内容: 此时程序报了如下错误,其实还是字符集问题: 为此:我们可 ...
- 10分钟了解 react 引入的 Hooks
"大家好,我是谷阿莫,今天要将的是一个...",哈哈哈,看到这个题我就想到这个开头.最近react 官方在 2018 ReactConf 大会上宣布 React v16.7.0-a ...
- java 调用第三方系统时的连接代码-记录
前言:该文章主要是总结我在实际工作中遇到的问题,在调取第三方系统的时候出现的问题,算自己的总结.各位博友如果有什么建议或意见欢迎留言指正. 先将准备传入参数 再与第三方系统建立连接 再第三方系统处理后 ...
- Python入门必学:递归函数正确的操作使用方法,案例详解
递归函数,在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以 ...
- 893E - Counting Arrays
E. Counting Arrays time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- winform中使用webBrowser时如何与JS交互
最近写一个GEPlugin项目,要用到geWebBrowser与JS进行交互. 这个geWebBrowser的事件 private void geWebBrowser1_DocumentComplet ...
- HDU 3896 Greatest TC 双连通分量
题意 给一个连通的无向图,有两种询问: \(a, b, c, d\),问如果删掉\(c,d\)之间的边,\(a,b\)之间是否还连通 \(a, b, c\),问如果删掉顶点\(c\),\(a,b\)之 ...
- 300万PV的ASP.NET网站使用阿里云的配置建议
@老牛吃肉在博文“今天的访问高峰,扛过去了”的评论中询问了这样一个问题: 你好,站长,本公司正在考虑用阿里云.用途:互联网网站,主要站点:asp.net开发目前的考虑情况:访问ip 15-20万,pv ...
- CentOS安装jdk和tomcat
1.查看是否已经安装 java -version 2.卸载自带的openjdk dnf remove java-1.7.0-openjdk 3.下载jdk安装包 wget -c http://111. ...
- Spring boot 上传文件大小限制
1.spring boot 1.x 版本 application.properties 文件中 位置在(resources下) spring.http.multipart.maxFileSize = ...