diff --git a/OJ notes/pages/Leetcode Merge-Intervals.md b/OJ notes/pages/Leetcode Merge-Intervals.md new file mode 100644 index 0000000..5ab10be --- /dev/null +++ b/OJ notes/pages/Leetcode Merge-Intervals.md @@ -0,0 +1,79 @@ +# Leetcode Merge-Intervals + +#### 2022-09-01 14:04 + +> ##### Algorithms: +> #algorithm #sort +> ##### Data structures: +> #DS #array +> ##### Difficulty: +> #coding_problem #difficulty-medium +> ##### Additional tags: +> #leetcode +> ##### Revisions: +> N/A + +##### Links: +- [Link to problem](https://leetcode.com/problems/merge-intervals/) +- [Solution ans Explanation](https://leetcode.com/problems/merge-intervals/solution/) +___ +### Problem + +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_. + +#### Examples + +**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] overlap, 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` + +### Thoughts + +> [!summary] +> This is a generic array problem. + +#### Situations to consider: + +- The intervals can be unordered +- The first interval +- `[0, 3] [0, 1]` are adjacent and overlapped. + +To solve the situations, sort first, and use `max` function to solve the 3rd solution. + +### Solution + +```cpp +class Solution { +public: + vector> merge(vector> &intervals) { + // sort first, so that data are continious + vector> ans; + + sort(intervals.begin(), intervals.end()); + + for (auto interval : intervals) { + if (ans.empty() || ans.back()[1] < interval[0]) { + ans.push_back(interval); + } else { + ans.back()[1] = max(interval[1], ans.back()[1]); + } + } + + return ans; + } +}; +``` \ No newline at end of file diff --git a/Leetcode Sort-Colors.md b/OJ notes/pages/Leetcode Sort-Colors.md similarity index 100% rename from Leetcode Sort-Colors.md rename to OJ notes/pages/Leetcode Sort-Colors.md