g1201_1300.s1288_remove_covered_intervals.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1201_1300.s1288_remove_covered_intervals;
// #Medium #Array #Sorting #2022_03_11_Time_6_ms_(78.87%)_Space_47.5_MB_(6.30%)
import java.util.PriorityQueue;
import java.util.Queue;
/**
* 1288 - Remove Covered Intervals\.
*
* Medium
*
* Given an array `intervals` where intervals[i] = [li, ri]
represent the interval [li, ri)
, remove all intervals that are covered by another interval in the list.
*
* The interval `[a, b)` is covered by the interval `[c, d)` if and only if `c <= a` and `b <= d`.
*
* Return _the number of remaining intervals_.
*
* **Example 1:**
*
* **Input:** intervals = \[\[1,4],[3,6],[2,8]]
*
* **Output:** 2
*
* **Explanation:** Interval [3,6] is covered by [2,8], therefore it is removed.
*
* **Example 2:**
*
* **Input:** intervals = \[\[1,4],[2,3]]
*
* **Output:** 1
*
* **Constraints:**
*
* * `1 <= intervals.length <= 1000`
* * `intervals[i].length == 2`
* * 0 <= li < ri <= 105
* * All the given intervals are **unique**.
**/
public class Solution {
public int removeCoveredIntervals(int[][] intervals) {
Queue q = new PriorityQueue<>((a, b) -> a[0] == b[0] ? b[1] - a[1] : a[0] - b[0]);
for (int[] interval : intervals) {
q.offer(interval);
}
int[] prev = q.poll();
int count = 0;
while (!q.isEmpty()) {
int[] curr = q.poll();
if (curr[0] >= prev[0] && curr[1] <= prev[1]) {
count++;
} else {
prev = curr;
}
}
return intervals.length - count;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy