diff --git a/apps/docs/content/(05-decision-space)/intervals/56-merge-intervals.mdx b/apps/docs/content/(05-decision-space)/intervals/56-merge-intervals.mdx new file mode 100644 index 0000000..e0cf768 --- /dev/null +++ b/apps/docs/content/(05-decision-space)/intervals/56-merge-intervals.mdx @@ -0,0 +1,50 @@ +--- +title: '56. Merge Intervals' +description: 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 +icon: dot +topics: + - { name: "Array", slug: "array" } + - { name: "Sorting", slug: "sorting" } + - { name: "Quicksort", slug: "quicksort" } +sidebar: + label: 'Merge Intervals' + badge: 'Medium' +--- + +### 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. + +### Example 3: +- Input: `intervals = [[4,7],[1,4]]` +- Output: `[[1,7]]` +- Explanation: Intervals `[1,4]` and `[4,7]` are considered overlapping. + +### Constraints: + +- `1 <= intervals.length <= 10^4` +- `intervals[i].length == 2` +- `0 <= starti <= endi <= 10^4` + +## Solution + +```py +class Solution: + def merge(self, intervals: list[list[int]]) -> list[list[int]]: + intervals.sort(key=lambda x: x[0]) + result = [] + + for start, end in intervals: + if result and start <= result[-1][1]: + result[-1][1] = max(result[-1][1], end) + else: + result.append([start, end]) + + return result +``` diff --git a/apps/docs/content/guides/(1-data-structures)/array.mdx b/apps/docs/content/guides/(1-data-structures)/array.mdx index 131f64f..67c4418 100644 --- a/apps/docs/content/guides/(1-data-structures)/array.mdx +++ b/apps/docs/content/guides/(1-data-structures)/array.mdx @@ -3,7 +3,7 @@ title: "Array" list: "https://leetcode.com/problem-list/array/" icon: list-ordered sidebar: - badge: '39' + badge: '40' --- :::note diff --git a/apps/docs/content/guides/(2-algorithms)/sorting.mdx b/apps/docs/content/guides/(2-algorithms)/sorting.mdx index 438084c..a230872 100644 --- a/apps/docs/content/guides/(2-algorithms)/sorting.mdx +++ b/apps/docs/content/guides/(2-algorithms)/sorting.mdx @@ -3,7 +3,7 @@ title: "Sorting" list: "https://leetcode.com/problem-list/sorting/" icon: arrow-down-wide-narrow sidebar: - badge: '10' + badge: '11' --- :::note diff --git a/apps/docs/content/guides/quicksort.mdx b/apps/docs/content/guides/quicksort.mdx new file mode 100644 index 0000000..212fe75 --- /dev/null +++ b/apps/docs/content/guides/quicksort.mdx @@ -0,0 +1,10 @@ +--- +title: "Quicksort" +list: "https://leetcode.com/problem-list/quicksort/" +sidebar: + badge: '1' +--- + +:::note +This guide has not been written yet. The LeetCode list above has every problem tagged Quicksort. +:::