题解 | #合并区间#

合并区间

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

题目 合并区间

日期 2022/03/20

思路

先自定义比较器,根据interval的start比较大小;合并区间时,将已经按升序排序的元素一个个加入,若加入的元素的start小于前一个元素的end时,则将这两个区间合并,起点为前一个元素的star,终点为这两个元素end的较大值。若若加入的元素的start不小于前一个元素的end,则直接加入

代码

import java.lang.Math;
/**
 * Definition for an interval.
 * public class Interval {
 *     int start;
 *     int end;
 *     Interval() { start = 0; end = 0; }
 *     Interval(int s, int e) { start = s; end = e; }
 * }
 */
public class Solution {
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        intervals.sort(new Comparator<Interval>(){
            public int compare(Interval a,Interval b){
                return a.start-b.start;
            }
        });
        
        ArrayList<Interval> res = new ArrayList<>();
        for(Interval val : intervals){
            if(res.isEmpty())
                res.add(val);
            else if(res.get(res.size()-1).end<val.start)
                res.add(val);
            else{
                res.add(new Interval(res.get(res.size()-1).start,Math.max(res.get(res.size()-1).end,val.end)));
                res.remove(res.get(res.size()-2));
            }
        }
        return res;
    }
}
全部评论

相关推荐

无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务