LeetCode 56. Merge Intervals

xiaoxiao2021-02-28  113

题意

给出 n <script type="math/tex" id="MathJax-Element-6">n</script>个区间,合并连续的区间并进行分块

思路

使用贪心的思想,按照起始点和结束点进行排序,然后遍历记录当前块的起始点和结束点,如果遍历点不在当前块内,存储当前块,然后重新分块,更新当前块.

代码

/** * 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> merge(vector<Interval>& intervals) { vector<Interval>ans; size_t len = intervals.size(); if(len == 0) return ans; sort(intervals.begin(), intervals.end(), cmp); int L = intervals[0].start, R = intervals[0].end; for(int i = 1; i < len; i++){ if(intervals[i].start <= R){ R = max(R, intervals[i].end); } else{ ans.push_back(Interval(L, R)); L = intervals[i].start; R = intervals[i].end; } } ans.push_back(Interval(L, R)); return ans; } private: static bool cmp(Interval A, Interval B){ if(A.start == B.start){ return A.end < B.end; } return A.start < B.start; } };
转载请注明原文地址: https://www.6miu.com/read-78215.html

最新回复(0)