56. Merge Intervals

leetcode url

Solutions

vector<vector<int>> merge(vector<vector<int>> &intervals){
	sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
		return a[0] < b[0];
	});
	vector<vector<int>> result;
	for (const auto& interval : intervals) {
		if (result.empty() || result.back()[1] < interval[0]) {
			result.push_back(interval);
		} else {
			result.back()[1] = max(result.back()[1], interval[1]);
		}
	}
	return result;
}

Time Complexity: O(logN)
Space Complexity: O(N)