题解 | 合并区间

合并区间

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

import java.util.*;

/*
 * public class Interval {
 *   int start;
 *   int end;
 *   public Interval(int start, int end) {
 *     this.start = start;
 *     this.end = end;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param intervals Interval类ArrayList
     * @return Interval类ArrayList
     */
    public ArrayList<Interval> merge (ArrayList<Interval> intervals) {
        if (intervals.size()==0){
            return new ArrayList(0);
        }
        //获得排序后的数组
        Collections.sort(intervals, new Comparator<Interval>() {
            public int compare(Interval first, Interval second) {
                if (first.start != second.start) {
                    return first.start - second.start;
                } else {
                    return first.end - second.end;
                }
            }


        });
        ArrayList<Interval> result = new ArrayList<>();
        Interval current = intervals.get(0);


        for (int i = 0; i < intervals.size() - 1; i++) {
            Interval next = intervals.get(i + 1);
            if (current.end >= next.start) {
                int newEnd = next.end > current.end? next.end:current.end;
                current =  new Interval(current.start, newEnd);

            } else {
                result.add(current);
                current = next;

            }


        }
        result.add(current);
        return result;

    }
}

思路:利用Collections的sort函数进行排序,不过要重写compare函数 compare函数返回是int

在考虑区间的时候要考虑区间的首尾部

同时,在做区间的时候,可以将其当做链表来做

全部评论

相关推荐

01-26 22:20
已编辑
门头沟学院 Java
Java抽象带篮子:项目很nb了,现在好好准备八股和算法吧,早点找实习,可以看看我的置顶帖子。帖子里写了怎么改简历,怎么包装实习经历,还有2个高质量可速成的项目话术,和我的牛客八股笔记专栏
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务