区间合并

合并区间

http://www.nowcoder.com/questionTerminal/69f4e5b7ad284a478777cb2a17fb5e6a

对左边界排序,如果下一个区间的左边界在前一个的有边界内,考虑是否要更新边界,如果如果下一个区间的左边界在前一个的有边界外,说明区间无法合并,开始计算下一个区间

    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        ArrayList<Interval> res = new ArrayList<>();
        Collections.sort(intervals,(a,b)->a.start-b.start);
        int len = intervals.size();
        int i = 0;
        while (i < len) {
            int left = intervals.get(i).start;
            int right = intervals.get(i).end;
            while (i < len-1 && intervals.get(i+1).start <= right) {
                right = Math.max(right,intervals.get(i+1).end);
                i++;
            }
            res.add(new Interval(left,right));
            i++;
        }
        return res;
    }
全部评论
我是自己实习了一遍大顶堆排序,但是楼主这个 Collections.sort(intervals,(a,b)->a.start-b.start)用法的依据是什么呀 ,查了好久没查到第二个参数做何解
点赞 回复 分享
发布于 2021-08-10 10:08

相关推荐

点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
44 收藏 评论
分享
牛客网
牛客企业服务