LeetCode Merge Intervals
来源:互联网 发布:快手红人衣服淘宝店铺 编辑:程序博客网 时间:2024/06/06 04:06
这题最头疼的是如何给vector中的结构体排序,重载sort中自己的编写的排序函数不行,重载小于操作符不行,后来看人家的,是重载结构体中的()操作符的,可以了,之后没什么,不知道有没有O(n)的方法
// LeetCode_MergeIntervals.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <vector>#include <iostream>#include <algorithm>using namespace std;struct Interval { int start; int end; Interval() : start(0), end(0) {} Interval(int s, int e) : start(s), end(e) {}bool operator<(const Interval &itv2) const{return start < itv2.start;}};/*bool operator <(const Interval &itv1,const Interval &itv2){return itv1.start < itv2.start;}bool compare_lessthan(const Interval &itv1,const Interval &itv2){return itv1.start < itv2.start;}*/struct comp { bool operator()(const Interval& lhs, const Interval& rhs) const { if(lhs.start != rhs.start) return lhs.start < rhs.start; else return lhs.end < rhs.end; } };vector<Interval> merge(vector<Interval> &intervals) {vector<Interval> ret;int len = intervals.size();if(len==0)return ret;sort(intervals.begin(),intervals.end(),comp());//sort(intervals.begin(),intervals.end());//sort(intervals.begin(),intervals.end(),compare_lessthan);int startLast = intervals[0].start,endLast = intervals[0].end;for (int i=1;i<len;i++){if (intervals[i].start<=endLast){endLast = intervals[i].end > endLast? intervals[i].end:endLast;}else{Interval temp(startLast,endLast);ret.push_back(temp);startLast = intervals[i].start;endLast = intervals[i].end;}}Interval temp2(startLast,endLast);ret.push_back(temp2);return ret;}int _tmain(int argc, _TCHAR* argv[]){vector<Interval> itvs;int start,end;while(cin>>start&&cin>>end){Interval itvl(start,end);itvs.push_back(itvl);}vector<Interval> ret;ret = merge(itvs);vector<Interval>::iterator iter = itvs.begin();while(iter!=itvs.end()){cout<<iter->start<<" "<<iter->end<<endl;iter++;}cout<<endl;vector<Interval>::iterator iter2 = ret.begin();while(iter2!=ret.end()){cout<<iter2->start<<" "<<iter2->end<<endl;iter2++;}system("pause");return 0;}网上说的有插入的做法,说是类似于插入排序的思想http://blog.csdn.net/ybhou/article/details/9397329 自己试了一下,他这程序的运行时间要更长。所以没怎么看。
0 0
- LeetCode: Merge Intervals
- LeetCode Merge Intervals
- LeetCode: Merge Intervals
- [Leetcode] Merge Intervals
- leetcode 28: Merge Intervals
- Leetcode: Merge Intervals
- [LeetCode] Merge Intervals
- [LeetCode]Merge Intervals
- leetcode merge intervals
- [leetcode]Merge Intervals
- LeetCode-Merge Intervals
- [leetcode] Merge Intervals
- LeetCode - Merge Intervals
- 【leetcode】Merge Intervals
- leetcode Merge Intervals
- LeetCode Merge Intervals
- [LeetCode] Merge Intervals
- LeetCode | Merge Intervals
- XML
- 解决vim supertab tab键被占用问题
- SpringMVC访问静态资源
- (总结)Web性能压力测试工具之Siege详解
- 黑马程序员 多线程
- LeetCode Merge Intervals
- Flex样式-HDividedBox篇
- Leetcode: Unique Paths II
- 常见的应用服务器
- H.264视频编码资料汇总,不断更新……
- 高性能Web服务器Nginx的配置与部署研究(11)应用模块之Memcached模块的两大应用场景
- linux中的串口调试工具minicom
- 黑马程序员 线程同步
- 学习JQuery - 5