博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
57 给出n个有序不重叠的区间,插入一个新区间,使整个区间仍有序不重叠
阅读量:3595 次
发布时间:2019-05-20

本文共 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/

你可能感兴趣的文章
CentOS下设置默认JDK
查看>>
剑指offer 43.左旋转字符串
查看>>
剑指offer 47. 求1 + 2 + 3 + .... + n
查看>>
分布式和集群的区别
查看>>
本科毕设完整流程和注意事项
查看>>
不要想着憋大招,先完成每个小招
查看>>
ps中怎么把一张图片的一种颜色全部替换成另外一种颜色
查看>>
答辩PPT撰写和答辩注意事项
查看>>
第二次实习的实习总结
查看>>
PPT的一些常用操作
查看>>
Java面试题解析(基础篇,附答案)
查看>>
Spring 常用的三种注入方式
查看>>
MyBatis 一级缓存在分布式下的坑你知道吗?
查看>>
2020年2月JVM面试的30个知识点
查看>>
在家办公7天整理Spring Cloud知识点大全
查看>>
看看这些Java代码开发规范吧!你好,我好,大家好!
查看>>
2020年3月,47个经典Spring面试题详解(附带答案)
查看>>
python实现Mapreduce的wordcount
查看>>
Linux字符设备驱动编(步骤,框架(面向对象),分层)
查看>>
linux高级字符驱动之输入子系统
查看>>