2021-12-24 Daily-Challenge

Today I have done leetcode's December LeetCoding Challenge with cpp.

December LeetCoding Challenge 24

Description

Merge Intervals

Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

Example 1:

Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].

Example 2:

Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.

Constraints

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

Solution

auto speedup = [](){
  cin.tie(nullptr);
  cout.tie(nullptr);
  ios::sync_with_stdio(false);
  return 0;
}();
class Solution {
public:
  vector<vector<int>> merge(vector<vector<int>>& intervals) {
    sort(intervals.begin(), intervals.end());

    vector<vector<int>> answer;
    vector<int> cur = intervals.front();
    for(auto &interval : intervals) {
      if(interval[0] > cur[1]) {
        answer.push_back(cur);
        cur[0] = interval[0];
      }
      cur[1] = max(interval[1], cur[1]);
    }
    answer.emplace_back(cur);
    return answer;
  }
};

// Accepted
// 168/168 cases passed (16 ms)
// Your runtime beats 88.84 % of cpp submissions
// Your memory usage beats 94.91 % of cpp submissions (14.1 MB)