题解 | #合并区间#

合并区间

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(Comparator.comparing((interval) -> interval.start));

        // write code here
        Interval last, cur;
        Boolean flag = false;
        ArrayList<Interval> result = new ArrayList<>();

        if(intervals.size() == 1 || intervals.size() == 0)   
            return intervals;

        last = intervals.get(0);
        for(int i = 1; i < intervals.size(); i++){
            cur = intervals.get(i);

            if(last.end >= cur.start){
                last = mergeIntervalTwo(last, cur);
                flag = true;
            }else{
                result.add(last);
                last = cur;
                flag = false;
            }
        }
        result.add(last);

        return result;
    }

    private Interval mergeIntervalTwo(Interval first, Interval second){
        return new Interval(first.start, first.end > second.end ? first.end : second.end);
    }
}

全部评论
首先,所有的难题,都来自于子题的分解 其次,难题要考虑的情况更多,这个确实很难做到
点赞 回复 分享
发布于 2024-06-04 12:36 上海

相关推荐

09-29 00:03
门头沟学院 Java
点赞 评论 收藏
分享
09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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