-
[Algorithm] LeetCode 57. Insert IntervalAlgorithm 2023. 1. 21. 18:06반응형
57. Insert Interval
Medium
You are given an array of non-overlapping intervals intervals where intervals[i] = [starti, endi] represent the start and the end of the ith interval and intervals is sorted in ascending order by starti. You are also given an interval newInterval = [start, end] that represents the start and end of another interval.
Insert newInterval into intervals such that intervals is still sorted in ascending order by starti and intervals still does not have any overlapping intervals (merge overlapping intervals if necessary).
Return intervals after the insertion.
Example 1:
Input: intervals = [[1,3],[6,9]], newInterval = [2,5] Output: [[1,5],[6,9]]
Example 2:
Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8] Output: [[1,2],[3,10],[12,16]] Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10].
Constraints:
- 0 <= intervals.length <= 104
- intervals[i].length == 2
- 0 <= starti <= endi <= 105
- intervals is sorted by starti in ascending order.
- newInterval.length == 2
- 0 <= start <= end <= 105
Solution:
class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { // define list List<int[]> list = new LinkedList<>(); // add all intervals that are non-overlapping to the newInterval int i = 0, n = intervals.length; while (i < n && intervals[i][1] < newInterval[0]) { list.add(intervals[i++]); } // merge newInterval with the overlapping interval while (i < n && intervals[i][0] <= newInterval[1]) { newInterval[0] = Math.min(newInterval[0], intervals[i][0]); newInterval[1] = Math.max(newInterval[1], intervals[i][1]); i++; } list.add(newInterval); // add the remaining intervals onth the list while(i < n) { list.add(intervals[i++]); } return list.toArray(new int[list.size()][2]); } }
반응형'Algorithm' 카테고리의 다른 글
[Algorithm] LeetCode 238.product-of-array-except-self (0) 2023.10.10 [Algorithm] LeetCode 217.contains-duplicate (0) 2023.10.10 [Algorithm] LeetCode 121. Best Time to Buy and Sell Stock (0) 2023.09.30 [LeetCode] 추천 75 문제 및 알고리즘 공부 방법 (0) 2023.09.30 [Algorithm] LeetCode 7. Reverse Integer (0) 2023.09.26