题解 | #插入区间#

插入区间

http://www.nowcoder.com/practice/1d784b5472ab4dde88ea2331d16ee909

这个题看起来可以使用“合并区间”的解法,但题目已经告知了输入的数组是已经按start字段升序,那么我们仅需要找到插入点,然后向后合并即可。时间复杂度O(n),空间复杂度O(n)(采用了list)。

public class Solution {
    public Interval[] insertInterval (Interval[] Intervals, Interval newInterval) {
        List<Interval> list = new LinkedList<>();
        boolean flag = false;//判断目标区间是否已经成功加入
        for(int i=0;i<Intervals.length;++i){
            list.add(Intervals[i]);
        }
        for(int i=0;i<list.size();++i){
            if(list.get(i).start>newInterval.start){
                list.add(i,newInterval);
                flag = true;
                break;
            }
        }
        if(!flag)list.add(newInterval);//如果目标区间还没加入,直接放到最后
        List<Interval> reslist = new LinkedList<>();
        reslist.add(list.get(0));
        for(int i=1;i<list.size();++i){
            if(list.get(i).start>reslist.get(reslist.size()-1).end){
                reslist.add(list.get(i));
            }
            else {
                reslist.get(reslist.size()-1).end = Math.max(list.get(i).end,reslist.get(reslist.size()-1).end);
            }
        }
        Interval[] res = new Interval[reslist.size()];
        int index = 0;
        for(Interval i:reslist){
            res[index++] = i;
        }
        return res;
    }
}
全部评论

相关推荐

手机爱睡觉:感觉是没hc了,上次双选hr说七月份就开了招了很多人
投递网易等公司10个岗位
点赞 评论 收藏
分享
11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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