[leetcode sort]57. Insert Interval
2024-09-03 11:23:31
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times.
Example 1:
Given intervals [1,3],[6,9]
, insert and merge [2,5]
in as [1,5],[6,9]
.
Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16]
, insert and merge [4,9]
in as [1,2],[3,10],[12,16]
.
This is because the new interval [4,9]
overlaps with [3,5],[6,7],[8,10]
.
把一个区间插入一个已排序的无重叠的区间, 如果重叠的话,合并之
方法一:有点类似于快排的方法
class Solution(object):
def insert(self, intervals, newInterval):
s,e = newInterval.start,newInterval.end
small = [ i for i in intervals if i.end<s ]
large = [ i for i in intervals if i.start>e ]
if small + large != intervals:
s = min(s,intervals[len(small)].start)
e = max(e,intervals[~len(large)].end)
return small+[Interval(s,e)]+large
方法二:和上面方法一样,不过这个代码太帅了!!!只需要遍历一次
class Solution(object):
def insert(self, intervals, newInterval):
s,e = newInterval.start,newInterval.end
parts = mid,left,right=[],[],[]
for v in intervals:
parts[(v.end<s)-(v.start>e)].append(v)
if mid:
s = min(s,mid[0].start)
e = max(e,mid[-1].end)
return left+[Interval(s,e)]+right
最新文章
- [LeetCode] Group Shifted Strings 群组偏移字符串
- php 多条数据更新
- 《Java虚拟机并发编程》学习笔记
- Android应用安全之Content Provider安全
- css知识
- getting started with Baxter Research Robot
- Linux 用户与用户组
- avalon.js实践 svg地图配置工具
- Unix/Linux环境C编程入门教程(7) OPENBSDCCPP开发环境搭建
- python的数据类型及操作
- JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类
- Activity的启动流程
- ASP.NET -- WebForm -- ScriptManager 类
- es6可变参数-扩展运算符
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;dataSource&#39; defined in class path resource [app2.xml]: Instantiation of bean failed; nested exception is org.spr
- shell中特殊位置参数变量
- Tomcat出现 java.net.ConnectException: Connection refused 异常的原因及解决方法
- AspNet mvc的一个bug
- canvas实现五子棋界面
- R语言编程艺术(4)R对数据、文件、字符串以及图形的处理