题解 | #合并区间#

合并区间

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

方法:模拟

  1. 先对list进行排序
  2. 从list中拿出第i个和第i+1个
  3. 判断是否有重叠:(v1.start >= v2.start && v1.start <= v2.end) || (v2.start >= v1.start && v2.start <= v1.end)
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        Collections.sort(intervals, new Comparator<Interval>() {
            @Override
            public int compare(Interval o1, Interval o2) {
                if (o1.start != o2.start) {
                    return o1.start - o2.start;
                }else {
                    return o1.end - o2.end;
                }
            }
        });
        int i = 0;
        while (i < intervals.size() - 1) {
            Interval v1 = intervals.get(i);
            Interval v2 = intervals.get(i + 1);
            if ((v1.start >= v2.start && v1.start <= v2.end) || (v2.start >= v1.start && v2.start <= v1.end)) {
                Interval newV = new Interval(Math.min(v1.start, v2.start), Math.max(v1.end, v2.end));
                intervals.remove(i);
                intervals.remove(i);
                intervals.add(i, newV);
            }else {
                i++;
            }
        }
        return intervals;
    }
}
全部评论

相关推荐

Bug压路:老哥看得出来你是想多展示一些项目,但好像一般最多两个就够了😂页数一般一页,多的也就2页;这些项目应该是比较同质化的,和评论区其他大佬一样,我也觉得应该展示一些最拿手的(质量>数量)😁😁😁专业技能部分也可以稍微精简一些
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务