56.Merge Intervals---贪心---《编程之美》2.19区间重合判断
题目链接:https://leetcode.com/problems/merge-intervals/description/
题目大意:给出一串list,里面装interval类,这个类里有start和end两个属性,表示起始点和结束点,如果前面interval的结束点>后面interval的起始点,则合并两个interval,起始点是较小者,结束点是较大者。例子如下:

法一(借鉴):先排序后求解。这里用到了java自定义类的排序 。只是排序时是按照start排序,而不是按照end排序,当start小的排在前面的时候,只需要比较end即可,否则按end排序的话,start小的如果在后面还是会出现问题,而又不能只比较start,所以很容易漏测试用例。思想:按start升序排列,如果end<start,则直接add;否则,更改当前end为max(当前end,新end)。代码如下(耗时26ms):
//自定义排序,按照start升序
class sortStart implements Comparator<Interval> {
public int compare(Interval i1, Interval i2) {
return i1.start - i2.start;
}
}
public List<Interval> merge(List<Interval> intervals) {
Collections.sort(intervals, new sortStart());
LinkedList<Interval> res = new LinkedList<Interval>();
for(Interval interval : intervals) {
//如果未重叠,则直接add
if(res.isEmpty() || res.getLast().end < interval.start) {
res.add(interval);
}
//如果重叠,则更新end,因为已经按start排好序,所以只更新end即可,不用更新start
else {
res.getLast().end = Math.max(res.getLast().end, interval.end);
}
}
return res;
}
56.Merge Intervals---贪心---《编程之美》2.19区间重合判断的更多相关文章
- 编程之美 set 8 区间重合判断
		
Leetcode 上有连续的两道题, 一个是 insert interval, 一个是 merge interval, 其中 insert interval 是 merge interval. 其中 ...
 - [Leetcode][Python]56: Merge Intervals
		
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 56: Merge Intervalshttps://oj.leetcode. ...
 - leetcode 56. Merge Intervals 、57. Insert Interval
		
56. Merge Intervals是一个无序的,需要将整体合并:57. Insert Interval是一个本身有序的且已经合并好的,需要将新的插入进这个已经合并好的然后合并成新的. 56. Me ...
 - 刷题56. Merge Intervals
		
一.题目说明 题目是56. Merge Intervals,给定一列区间的集合,归并重叠区域. 二.我的做法 这个题目不难,先对intervals排序,然后取下一个集合,如果cur[0]>res ...
 - 56. Merge Intervals  - LeetCode
		
Question 56. Merge Intervals Solution 题目大意: 一个坐标轴,给你n个范围,把重叠的范围合并,返回合并后的坐标对 思路: 先排序,再遍历判断下一个开始是否在上一个 ...
 - LeetCode 题解 56. Merge Intervals
		
题目大意:给出一组区间,合并他们. 首先是排序,首先看start,start小的在前面.start相同的话,end小的在前面. 排序以后,要合并了. 我自己的笨方法,说实在的问题真的很多.提交了好几次 ...
 - 56. Merge Intervals 57. Insert Interval *HARD*
		
1. Merge Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[ ...
 - 【LeetCode】56. Merge Intervals
		
Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given ...
 - Leetcode#56 Merge Intervals
		
原题地址 排序+合并,没啥好说的 第一次尝试C++的lambda表达式,有种写js的感觉,很神奇 c11就支持了lambda表达式,仔细想想,我学C++大概就是在09~10年,c11还没有发布,不得不 ...
 
随机推荐
- CF44H Phone Number
			
题意翻译 给你一个电话号码,根据这个号码生成一个新的号码.生成的规则就是 新号码的第一个数任意选(0-9), 然后之后的每一个新号码都按照以下规则生成: 第i个新号码=(第i-1个新号码+第i个老号码 ...
 - DjangoORM字段参数介绍
			
参数介绍: 字段的参数: null: ->db是否可以为空 default: ->默认值 primary_key: ...
 - Codeforces710
			
[未完待续] A The only king stands on the standard chess board. You are given his position in format &quo ...
 - 电子商务(电销)平台中内容模块(Content)数据库设计明细
			
以下是自己在电子商务系统设计中的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 文章表 (article)|-- 自动编号|-- 文章标题 (title)|-- 文章类别编号 (c ...
 - 解题:POI 2013 Taxis
			
题面 设当前位置为$pos$,那么可以发现在出租车总部左侧时,每辆车的贡献是$x[i]-(d-pos)$,而在右侧时只有$x[i]>=m-d$的车能够把人送到,那么首先我们要找出最小的满足$x[ ...
 - Mybatis中jdbcType和javaType对应关系
			
Mybatis中javaType和jdbcType对应关系 JDBC Type Java Type CHAR String VARCHAR ...
 - Codeforces 19.E Fairy
			
E. Fairy time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input ou ...
 - C++构造函数和析构函数顺序
			
构造函数 先看看构造函数的调用顺序规则,只要我们在平时编程的时候遵守这种约定,任何关于构造函数的调用问题都能解决:构造函数的调用顺序总是如下:1.基类构造函数.如果有多个基类,则构造函数的调用顺 ...
 - CSS3实现文本垂直排列
			
最近的一个项目中要使文字垂直排列,也就是运用了CSS的writing-mode属性. writing-mode最初时ie中支持的一个属性,后来在CSS3中增添了这一新的属性,所以在ie中和其他浏览器中 ...
 - ZOJ 3781 Paint the Grid Reloaded 连通块
			
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781 题意:n*m只由OX组成的矩阵,可以选择某一连通块变成另一 ...