LeetCode题目-57

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2017-03-28 05:56:59

简介 LeetCode题目-57


✏Leetcode基础刷题(57. Insert Interval)


.

✏题目描述

在给定的一组不重叠的区间中,插入一个新的区间(必要时需要合并区间)。


✏题目实例



✏题目分析

可以先看看两个 demo 中的案例。我们可以对原区间进行遍历,只有两种情况,要么加上 newInterval 区间后重叠了,要么不重叠,如果不重叠就好处理了,即在对应的区间位置加入一个未重叠的新区间。如果重叠了,因为可能包含了好几个重叠的区间,那就需要确定重叠的总区间,然后取相应的最小值和最大值组成新的区间。具体看代码

✏最终实现代码


/**
     * @param Integer[][] $intervals
     * @param Integer[] $newInterval
     * @return Integer[][]
     */
    function insert($intervals, $newInterval) {
        $res=[]; //最后结果
        $n=count($intervals);
        $cur=0; //记录位置
        
        //未重叠
        while($cur<$n && $intervals[$cur][1]<$newInterval[0]){
            $res[]=$intervals[$cur++];
        }
        while($cur<$n && $intervals[$cur][0] <=$newInterval[1]){
            $newInterval[0]=min($intervals[$cur][0],$newInterval[0]);
            $newInterval[1]=max($intervals[$cur][1],$newInterval[1]);
            ++$cur;
        }
        $res[]=$newInterval;
        //补上后面的区间
        while($cur<$n){
            $res[]=$intervals[$cur++];
        }
        return $res;
    }

转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云