Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 1.26 KB

File metadata and controls

48 lines (39 loc) · 1.26 KB

1288. 删除被覆盖区间

给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。

只有当 c <= ab <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。

在完成所有删除操作后,请你返回列表中剩余区间的数目。

示例:

输入: intervals = [[1,4],[3,6],[2,8]]
输出: 2
解释: 区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。

Example 2:

Input: intervals = [[1,4],[2,3]]
Output: 1

Constraints:

  • 1 <= intervals.length <= 1000
  • 0 <= intervals[i][0] < intervals[i][1] <= 10^5
  • 对于所有的 i != jintervals[i] != intervals[j]

题解 (Rust)

1. 题解

impl Solution {
    pub fn remove_covered_intervals(intervals: Vec<Vec<i32>>) -> i32 {
        let mut intervals = intervals;
        let mut max_r = 0;
        let mut ret = intervals.len() as i32;
        intervals.sort_unstable_by_key(|interval| (interval[0], -interval[1]));

        for interval in intervals {
            if interval[1] <= max_r {
                ret -= 1;
            } else {
                max_r = interval[1];
            }
        }

        ret
    }
}