diff --git a/README.md b/README.md deleted file mode 100644 index 4372b78..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# algorithms \ No newline at end of file diff --git a/intervals.md b/intervals.md new file mode 100644 index 0000000..7244f2f --- /dev/null +++ b/intervals.md @@ -0,0 +1,79 @@ +# Intervals + ++ [Non-overlapping Intervals](#non-overlapping-intervals) ++ [Merge Intervals](#merge-intervals) ++ [Insert Interval](#insert-interval) + + + +## Non-overlapping intervals + +https://leetcode.com/problems/non-overlapping-intervals + +```python +class Solution(object): + def eraseOverlapIntervals(self, intervals): + """ + :type intervals: List[List[int]] + :rtype: int + """ + + intervals_count = len(intervals) + if intervals_count <= 1: + return 0 + rightsorted_intervals = sorted(intervals, key=lambda x: x[1]) + counter = 0 + last_end = float("-inf") + for interval in rightsorted_intervals: + if interval[0] >= last_end: + last_end = interval[1] + counter += 1 + return intervals_count - counter + +``` + +## Merge intervals + +https://leetcode.com/problems/merge-intervals/ + +```python +class Solution(object): + def merge(self, intervals): + """ + :type intervals: List[List[int]] + :rtype: List[List[int]] + """ + + merged_intervals = [] + for interval in sorted(intervals, key=lambda x: x[0]): + if merged_intervals and interval[0] <= merged_intervals[-1][1]: + merged_intervals[-1][1] = max(interval[1], merged_intervals[-1][1]) + else: + merged_intervals += [interval] + return merged_intervals + +``` + +## Insert interval + +https://leetcode.com/problems/insert-interval/ + +```python +class Solution(object): + def insert(self, intervals, newInterval): + """ + :type intervals: List[List[int]] + :type newInterval: List[int] + :rtype: List[List[int]] + """ + + intervals.append(newInterval) + merged_intervals = [] + for interval in sorted(intervals, key=lambda x: x[0]): + if merged_intervals and interval[0] <= merged_intervals[-1][1]: + merged_intervals[-1][1] = max(interval[1], merged_intervals[-1][1]) + else: + merged_intervals += [interval] + return merged_intervals + +```