题解 | #合并区间#

合并区间

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) {
        intervals.sort((o1, o2) -> o1.start - o2.start);
        ArrayList<Interval> mergedList = new ArrayList<>();
        Interval interval1 = intervals.get(0);
        Interval interval2 = new Interval(0, 0);
        for(int i = 0; i < intervals.size(); i++){
            interval2 = intervals.get(i + 1);
            if(interval1.end > interval2.start){
                if(interval1.end < interval2.end){
                    //merge
                    interval1.end = interval2.end;
                }else{
                    //全包子集 如 [10, 30], [20, 25]
                    continue;
                }
                if(i == intervals.size() - 2){
                    mergedList.add(interval1);
                    break;
                }
            } else if(interval1.end < interval2.start){
                //无交集 如 [10,30][40,50]
                mergedList.add(interval1);
                interval1 = interval2;
                if(i == intervals.size() - 2){
                    mergedList.add(interval2);
                    break;
                }
            }
        }
        return mergedList;
    }
}

全部评论

相关推荐

迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务