1. 程式人生 > >【LeetCode】56. Merge Intervals(C++)

【LeetCode】56. Merge Intervals(C++)

地址:https://leetcode.com/problems/jump-game/

題目:

https://leetcode.com/problems/merge-intervals/
Example 1:
在這裡插入圖片描述
Example 2:
在這裡插入圖片描述

理解:

在有序的情況下,直接從頭到尾和並一次就可以了。

實現:

在排序的時候,end的大小其實是不重要的。

class Solution {
public:
	vector<Interval> merge(vector<Interval>& intervals) {
		if (intervals.empty()) return{};
		vector<Interval> res;
		sort(intervals.begin(), intervals.end(), [](const Interval &lhs, const Interval &rhs) {return lhs.start < rhs.start; });
		res.push_back(intervals[0]);
		for (int i = 1; i < intervals.size(); ++i) {
			if (intervals[i].start <= res.back().end)
				res.back().end = max(res.back().end, intervals[i].end);
			else
				res.push_back(intervals[i]);
		}
		return res;
	}
};