题解 | #合并区间#Java 97% 用栈中转好理解

合并区间

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

import java.util.*;
/**
 * 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) {
        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;
            }
        });
        Stack<Interval> stack = new Stack<>();
        for(int i = 0; i < intervals.size(); i++){
            if(stack.isEmpty()){
                stack.push(intervals.get(i));
            }else{
                Interval t = stack.peek();
                if(t.end >= intervals.get(i).start){
                    stack.pop();
                    stack.push(getnew(t,intervals.get(i)));
                }else{
                    stack.push(intervals.get(i));
                }
            }
        }
        ArrayList<Interval> res = new ArrayList<>(stack);
        return res;
    }
    Interval getnew(Interval i1, Interval i2){
        int start = Math.min(i1.start, i2.start);
        int end = Math.max(i1.end,i2.end);
        return new Interval(start,end);
    }
}
全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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