重叠区间个数(算法)
2015-08-31 16:58
155 查看
给定一个可能重叠的区间,找出重叠区间的个数:
区间定义如下:
输入:【1,5】 【10,15】 【5,10】 【20,30】
输出: 3
本题对面试者考察的是对复杂数据结构排序的能力,解题思路:先对以上区间排序再遍历,发现起点就flag 加1,反之减1,求出最大的flag即为重叠区间个数;
区间定义如下:
class Interval { int start; int end; Interval(int a,int b) { start = a; end = b; } };举例如下:
输入:【1,5】 【10,15】 【5,10】 【20,30】
输出: 3
本题对面试者考察的是对复杂数据结构排序的能力,解题思路:先对以上区间排序再遍历,发现起点就flag 加1,反之减1,求出最大的flag即为重叠区间个数;
class Point implements Comparable<Point> { int value; int type; Point(int v,int t) { value = v; type = t; } pulbic int compareTo(Point p) { if(this.value == p.value; return 0; else if(this.value > p.value) return 1; else return -1; } } int getOverlappingCount(Interval [] A) { int max = 0; int count = 1; if(A == NULL || A.length == 1) return max; Point[] points = new Point[A.length * 2 ]; for(int i = 0;i < a.length; i++) { points[2*i] = new Point(A[i].start,0); points[2*i + 1] = new Point(a[i].end,1); } Collections.sort(points); for(int i = 0; i < points.length; i++) { if(points[i].type == 0) { count++; max = Math.max(max,count); } else { count--; } } return max; }
相关文章推荐
- Hadoop第8周练习—Pig部署及统计访问日志例子
- Form表单基础知识和常用兼容方法笔记(一)
- HTML5 Geolocation(地理定位)用于定位用户的位置。
- spring整合webservice
- TCP/IP、Http、Socket的区别
- js快速排序
- 1145 -- ACMer
- 高效启动页(Splash) 推荐
- 1144 -- 光辉女郎之终极闪光
- Linux内核空间映射到用户空间
- The Memory Sinkhole
- 正则表达式之 JS 验证
- poj 3080 Blue Jeans
- C++动态数组使用方法
- Hadoop第7周练习—MapReduce进行数据查询和实现推简单荐系统
- 设计模式的依赖倒转原则再理解
- 设计模式(2):两条原则
- opencv for android sample导入有误
- 使用HangFG进行Oracle Hang分析
- [leetcode] 3.Longest Substring Without Repeating Characters