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