leetcode: Merge Intervals
来源:互联网 发布:excel跨表数据有效性 编辑:程序博客网 时间:2024/06/16 10:18
AC代码,重新申请一个vector,而不是in-place,就通过了
/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */class Solution {public: vector< Interval> insert( vector< Interval> &res, Interval new_interval){ auto iter = res.begin(); while( iter != res.end()){ if( new_interval.end < iter->start){ res.insert( iter, new_interval); return res; } else if( iter->end < new_interval.start){ ++iter; continue; } else{ new_interval.start = min( iter->start, new_interval.start); new_interval.end = max( iter->end, new_interval.end); res.erase(iter); } } res.insert( res.end(), new_interval); return res; } vector<Interval> merge(vector<Interval> &intervals) { vector< Interval> res; for( int i = 0; i < intervals.size(); ++i){ insert( res, intervals[i]); } return res; }};
TLE,哪里不够快呢。
还有这里可以不用自己写排序,只需要写个比较函数,然后调用库函数就可以了
/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */class Solution {public: static bool comp(Interval a, Interval b){ return a.start < b.start; } vector<Interval> merge(vector<Interval> &intervals) { if(intervals.size() <= 1) return intervals; sort( intervals.begin(), intervals.end(), comp); int i = 0; while( i + 1 < intervals.size()){ if( intervals[i].end < intervals[i+1].start){ ++i; } else{ intervals[i+1].start = min( intervals[i].start, intervals[i+1].start); intervals[i+1].end = max( intervals[i].end, intervals[i+1].end); intervals.erase( intervals.begin() + i); } } return intervals; } /*void swap( vector< Interval> &intervals, int i, int j){ Interval tmp = intervals[i]; intervals[i] = intervals[j]; intervals[j] = tmp; } void quicksort( vector< Interval> &intervals, int l, int r){ if( l < r){ int pivot = intervals[0].start; swap( intervals, 0, r); int i = l, j = r - 1; while( true){ while( intervals[i].start < pivot) ++i; while( intervals[j].start > pivot) --j; if( i < j) swap( intervals, i, j); else break; } swap( intervals, i, r); quicksort( intervals, l, i-1); quicksort( intervals, i+1, r); } }*/};
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
- CCActionManager(动作管理器)
- typedef
- EntityFramework走马观花之CRUD(中)
- Scikit-learn-python机器学习工具入门学习
- 分析MDK启动代码__main
- leetcode: Merge Intervals
- android显示TextView文字的倒影效果
- linux c语言定时器
- unity内存优化总结
- UML 类图关系说明
- 项目重命名之后带来的启动错误
- ZXing for iOS Scan (Qr , data metrics code)
- u-boot-2011.06启动流程分析
- 二进制整数中1的个数