题目:合并区间
2015-08-19 19:07
351 查看
给出若干闭合区间,合并所有重叠的部分。
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
给出的区间列表 => 合并后的区间列表:
挑战
O(n log n) 的时间和 O(1) 的额外空间。
标签 Expand
排序
数组
相关题目 Expand
/**
* Definition of Interval:
* public class Interval {
* int start, end;
* Interval(int start, int end) {
* this.start = start;
* this.end = end;
* }
*/
class Solution {
/**
* @param intervals: Sorted interval list.
* @return: A new sorted interval list.
*/
public List<Interval> merge(List<Interval> intervals) {
// write your code here
if(null==intervals||intervals.size()==0) return intervals;
List<Interval> result = new ArrayList<Interval>();
Collections.sort(intervals,new IntervalComparator() );
int i = 1;
Interval tmp = intervals.get(0);
while (i < intervals.size()) {
Interval x = intervals.get(i);
if (x.start > tmp.end) {
result.add(tmp);
tmp = x;
} else {
if(tmp.end<x.end){
tmp.end = x.end;
}
}
i++;
}
result.add(tmp);
return result;
}
class IntervalComparator implements Comparator<Interval>{
@Override
public int compare(Interval o1, Interval o2) {
// TODO Auto-generated method stub
return o1.start-o2.start;
}
}
}
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
给出的区间列表 => 合并后的区间列表:
[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ] ]
挑战
O(n log n) 的时间和 O(1) 的额外空间。
标签 Expand
排序
数组
相关题目 Expand
/**
* Definition of Interval:
* public class Interval {
* int start, end;
* Interval(int start, int end) {
* this.start = start;
* this.end = end;
* }
*/
class Solution {
/**
* @param intervals: Sorted interval list.
* @return: A new sorted interval list.
*/
public List<Interval> merge(List<Interval> intervals) {
// write your code here
if(null==intervals||intervals.size()==0) return intervals;
List<Interval> result = new ArrayList<Interval>();
Collections.sort(intervals,new IntervalComparator() );
int i = 1;
Interval tmp = intervals.get(0);
while (i < intervals.size()) {
Interval x = intervals.get(i);
if (x.start > tmp.end) {
result.add(tmp);
tmp = x;
} else {
if(tmp.end<x.end){
tmp.end = x.end;
}
}
i++;
}
result.add(tmp);
return result;
}
class IntervalComparator implements Comparator<Interval>{
@Override
public int compare(Interval o1, Interval o2) {
// TODO Auto-generated method stub
return o1.start-o2.start;
}
}
}
相关文章推荐
- MongoDB学习三--MongoDB简单增删改查
- 题目:合并两个排序链表
- Android中级开发之Material Design-CardView初探
- 在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字
- 辛星浅析InnoDB的MVCC实现
- WCF简介
- Activity操作,Intent六大属性
- Twiki 维基安装笔记
- 动态使用Fragment
- 一次接口网站IIS6切换成IIS7失误造成的影响
- 生成随机数
- ios-UIKit动画
- 题目:单例
- git入门指南
- Canvas——JavaScript高级程序设计笔记(12)
- EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射
- 题目:加一
- 静态函数调用非静态函数的小例子
- ExtJS学习之MessageBox
- test