本文共 554 字,大约阅读时间需要 1 分钟。
【题目】
【分析】 这个题不难,但是比较恶习。。。。涉及到合并。 56题,我们做了合并区间,这个题可以转化为上一个题做。我们不用这种方法。
步骤(1):我们首先找到要合并的区间的起点。 当第i个的终点<newInteval的起点时,i就可以跳过。否则就可以确定起点了。有以下两种情况: 情况1:
情况2:
对于这两种情况:起点为Math.min(i的起点,待插入区间的起点).
如果找到最后也没找到这样的i,则说明新插入的区间在最后面:
步骤(2):找要合并的区间的终点 又分为两种情况: 情况1:当新插入的区间的终点<第i个区间的起点。这时候终点就是新区间的终点。且插入完要合并的区间之后,要插入i以后的区间。 或 情况2:当新插入的区间的终点,在第i个区间的范围内。这时候终点就是第i个区间的终点。且插入完要合并的区间之后,要插入i+1以后的区间。 或
特殊情况:当找到最后的时候,还是没有找到end,那end就是新插入区间的end。注意:这个时候虽然i=n,但是不能通过i==n来判断。因为情况2里面,如果在最后一个区间里找到了,我们也把i加1了。我们可以通过end是否已经改变来判断。
或 步骤(3):把新合并的区间插入。把剩下的区间插入。
【代码】
代码比较长,但是只要清楚逻辑,就不难。
【结果】
|
转载地址:http://kslwn.baihongyu.com/