重叠区间个数
来源:互联网 发布:黑客python 编辑:程序博客网 时间:2024/05/17 07:36
问题:给定多个可能重叠的区间,找出重叠区间的个数。
例如:
输入:[1,5],[10,15],[5,10],[20,30]
输出:3
时间复杂度O(nlogn) OC算法实现:
/** 6 */#import <Foundation/Foundation.h>//区间点对象@interface IntervalPoint : NSObject@property (nonatomic,assign) int value;//值@property (nonatomic,assign) int type;//类型 0-起点 1-终点- (id)initWith:(int)value type:(int)type;@end//区间@interface Interval : NSObject@property (nonatomic, strong) IntervalPoint *startPoint;//起点@property (nonatomic, strong) IntervalPoint *endPoint;//终点- (id)initWith:(IntervalPoint *)startPoint endPoint:(IntervalPoint *)endPoint;@end@interface OverlapCount : NSObject- (int)overlapCount:(NSArray *)pointArr;@end
#import "OverlapCount.h"@implementation IntervalPoint- (id)initWith:(int)value type:(int)type{ if ([super init]) { self.value = value; self.type = type; } return self;}@end@implementation Interval- (id)initWith:(IntervalPoint *)startPoint endPoint:(IntervalPoint *)endPoint{ if ([super init]) { self.startPoint = startPoint; self.endPoint = endPoint; } return self;}@end@implementation OverlapCount- (int)overlapCount:(NSArray *)intervalArr{ int max = 0;//最大重叠区间数 //将区间排序 NSMutableArray *unsortArr = [NSMutableArray array]; for (Interval *interval in intervalArr) { [unsortArr addObject:interval.startPoint]; [unsortArr addObject:interval.endPoint]; } NSArray *sortedArr = [unsortArr sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { IntervalPoint *point1 = (IntervalPoint *)obj1; IntervalPoint *point2 = (IntervalPoint *)obj2; if (point1.value > point2.value) { return NSOrderedDescending; } if (point1.value < point2.value) { return NSOrderedAscending; } return NSOrderedSame; }]; //扫描升序数组 //遇到起点,重叠数加一,并记录最大值 //遇到终点,重叠书减一 int count = 1; for (IntervalPoint *point in sortedArr) { if (point.type == 0) { count++; if (count>max) { max = count; } } else { count--; } } return max;}@end
0 0
- 重叠区间的个数
- 重叠区间个数
- 重叠区间的个数
- 算法练习:重叠区间个数
- 重叠区间个数(算法)
- 面试:数组:重叠区间个数
- 给出多个可能重叠的区间,找出重叠区间的个数。
- 区间重叠
- 重叠区间大小
- 求重叠区间
- 区间重叠判断算法
- HDU1050-贪心-区间重叠
- 最大重叠区间大小
- 区间重叠判断算法
- hdu_moving tables 区间重叠
- 最大不重叠区间
- 最大区间重叠.
- 区间重叠的判断
- android ListView几个比较特别的属性
- 【poj3233】 Matrix Power Series
- Android的FragmentTabHost使用总结(顶部或底部菜单栏)
- poj2485 Highways(最小生成树水题)
- 实验2 Activity和Intent-任务2:标准体重计算器
- 重叠区间个数
- 清理tomcat缓存的步骤
- webservice: Could not initialize Service NoSuchMethodException getPortClassMap()
- nginx的学习笔记
- Java枚举
- c经典编程实例
- linux命令 备忘
- React Native Button实现
- 【自考】数据结构导论——二叉树