【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;
	}
};

猜你喜欢

转载自blog.csdn.net/Ethan95/article/details/84671919