Leetcode 056 Merge Intervals(高效)

xiaoxiao2021-02-28  46

题目连接:Leetcode 056 Merge Intervals

解题思路:先将所有的Intervals按照左边界排序,然后当相邻的两个Interval重叠时,即可以合并两个Interval。

/** * 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 cmp(const Interval& a, const Interval& b) { return a.start < b.start; } vector<Interval> merge(vector<Interval>& intervals) { int n = intervals.size(), p = 0; sort(intervals.begin(), intervals.end(), cmp); for (int i = 0; i < n; i++) { if (intervals[i].start <= intervals[p].end) { intervals[p].end = max(intervals[i].end, intervals[p].end); } else intervals[++p] = intervals[i]; } vector<Interval> ans; if (n == 0) return ans; for (int i = 0; i <= p; i++) ans.push_back(intervals[i]); return ans; } };
转载请注明原文地址: https://www.6miu.com/read-2619366.html

最新回复(0)