LintCode-合并区间
来源:互联网 发布:js点击事件隐藏 编辑:程序博客网 时间:2024/05/20 07:18
题目描述:给出若干闭合区间,合并所有重叠的部分。
样例:
给出的区间列表 => 合并后的区间列表:
[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ]]
做题思路:先用bool函数规定一种排序算法,每个数组的第一个数字比较,按照升序的方法排列。运用sort函数将intervals的数组按照规定排列,分情况讨论,一共有两种情况,一种是前一个数组的最后一个数字大于等于后一个数组的最后一个数字,那就取前面那个数组,因此在intervals中删除后一个数组;一种是前一个数组的最后一个数字大于等于后一个数组的第一个数字,为了取最大的范围,就需要把后一个数组的end赋给前一个数组的end,然后删掉后一个数组。进行这样的操作,数组中最终留下的就是所有区间的合并区间。
关键代码:
/** * Definition of Interval: * classs Interval { * int start, end; * Interval(int start, int end) { * this->start = start; * this->end = end; * } */ bool pailie(const Interval &a, const Interval &b) { return a.start<b.start;}class Solution {public: /** * @param intervals: interval list. * @return: A new interval list. */ vector<Interval> merge(vector<Interval> &intervals) { // write your code here std::sort(intervals.begin(),intervals.end(),pailie); int i=1; while(1) { if(i>=intervals.size()) break; if (intervals[i-1].end>=intervals[i].end) { intervals.erase(intervals.begin()+i);} else if(intervals[i-1].end>=intervals[i].start) { intervals[i-1].end=intervals[i].end; intervals.erase(intervals.begin()+i);} else i++; } return intervals; }};
做题感想:这一题刚开始想的时候一点思路也没有,同学说需要把区间用sort函数排序。然后就想到了排序之后可以比较,这一题参考网上的答案,刚开始我写的时候在删除那里出现了问题,后来又看了看网上的答案才改正过来。
阅读全文
0 0
- lintcode-156-合并区间
- LintCode- 合并区间
- LintCode:合并区间
- 合并区间-lintcode
- lintcode,合并区间
- LintCode【合并区间】
- LintCode-合并区间
- lintcode 合并区间
- lintcode 合并区间
- 合并区间-LintCode
- LintCode 合并区间
- LintCode 合并区间
- lintcode[156]:合并区间
- 合并区间-LintCode
- Lintcode——合并区间
- lintCode-给出若干闭合区间,合并所有重叠的部分。
- 区间合并
- 合并区间
- Arcgis js featureLayer加载完成之后,对其加载的要素重新定义样式
- URI URL区别
- 整数排序
- MySql删除重复数据
- 两数之和
- LintCode-合并区间
- (搬运).net起步 (初步创建具有成员资格和用户登录功能的网站)
- jquery 的某些函数,格式是什么样的,是怎么闭合的?感觉都是{(;什么的。怎么看这样的代码?
- 测试员如何使用TestFlight进行测试
- 两数组的交Ⅱ
- gitolite构建git服务器
- 安卓布局动画
- 打印出1-200以内的所有素数
- 个人可能用到的一些文章的链接(记录用)