题解 | 合并区间

合并区间

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

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

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

全部评论

相关推荐

下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
若怜君欢:驾驶证去掉吧,PPT啥的也去掉,本硕课程去掉,导师和研究方向去掉;加入本硕排名(好才写);技能栏加入你会的那些控制算法和滤波算法,这个比你会啥啥啥软件更有用;获奖写上去,奖学金啊,有没有专利啊之类的 电机和硬件这一块,属于传统制造业,制造业实习并不多。多投一些攒攒经验,有实习最好,没有也不需要焦虑(制造业实习其实除了转正,没多大用处) 最后,划重点,等秋招开始后,把你所有社交软件都发一份简历上去,并经常更新,找人内推你!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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