码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode——删除被覆盖区间

时间:2020-11-11 15:45:50      阅读:4      评论:0      收藏:0      [点我收藏+]

标签:remove   math   java   除了   else   排序   合并   public   interval   

Q:给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。
只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。
在完成所有删除操作后,请你返回列表中剩余区间的数目。

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

A:
对于三种情况,我们应该这样处理:
对于情况一,找到了覆盖区间。
对于情况二,两个区间可以合并,成一个大区间。
对于情况三,两个区间完全不相交。

    public int removeCoveredIntervals(int[][] intervals) {
        if (intervals.length <= 1)
            return intervals.length;
        Arrays.sort(intervals, (t1, t2) -> {
            if (t1[0] == t2[0])
                return t2[1] - t1[1];
            else
                return t1[0] - t2[0];
        });//排序
        int left = intervals[0][0];
        int right = intervals[0][1];

        int res = 1;
        for (int i = 1; i < intervals.length; i++) {
            if (right < intervals[i][0]) {
                left = intervals[i][0];
                right = intervals[i][1];
                res++;
            } else {
                if (right < intervals[i][1])
                    res++;
                left = Math.min(left, intervals[i][0]);
                right = Math.max(right, intervals[i][1]);
            }
        }
        return res;
    }

LeetCode——删除被覆盖区间

标签:remove   math   java   除了   else   排序   合并   public   interval   

原文地址:https://www.cnblogs.com/xym4869/p/13763750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!