class Solution:
def judgeIntersection(self,a:'Interval',b:'Interval'): #返回值1,bool类型,是否有交集:True-有交集,False-无交集
#返回值2,int类型,哪个先结束:0-A先结束,1-B先结束,2-AB同时结束
#返回值3,Interval类型,交集的值:有交集时是Interval实例,无交集时是None intersect = False firstEnd = 2
if a.end < b.end:
firstEnd = 0
elif a.end > b.end:
firstEnd = 1
else:
firstEnd = 2 intersectArea = Interval() if a.start <= b.start and a.end >= b.start and a.end <= b.end:
#print('True,[b.start,a.end]')
intersect = True
intersectArea.start=b.start
intersectArea.end=a.end
elif a.start >= b.start and a.start <= b.end and a.end >= b.end:
#print('True,[a.start,b.end]')
intersect = True
intersectArea.start=a.start
intersectArea.end=b.end
elif a.start>= b.start and a.end <= b.end:
#print('True,[a.start,a.end]')
intersect = True
intersectArea.start=a.start
intersectArea.end=a.end
elif a.start<=b.start and a.end >= b.end:
#print('True,[b.start,b.end]')
intersect = True
intersectArea.start=b.start
intersectArea.end=b.end
elif a.end < b.start:
#print('False,None')
intersect = False
intersectArea = None
elif a.start > b.end:
#print('False,None')
intersect = False
intersectArea = None
else:
print('error') return intersect,firstEnd,intersectArea def intervalIntersection(self, A: 'List[Interval]', B: 'List[Interval]') -> 'List[Interval]':
Aindex = 0
Bindex = 0
Alen = len(A)
Blen = len(B)
ListI = list() while Aindex < Alen and Bindex < Blen:
r1,r2,r3 = self.judgeIntersection(A[Aindex],B[Bindex])
if r1:
ListI.append(r3) if r2 == 0:
Aindex+=1
elif r2 == 1:
Bindex+=1
else:
Aindex+=1
Bindex+=1 return ListI

leetcode986的更多相关文章

  1. [Swift]LeetCode986. 区间列表的交集 | Interval List Intersections

    Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order ...

随机推荐

  1. windows下怎么生成github的ssh公钥

    windows下如何生成github的ssh公钥: 1.首先你要安装Git工具 2.在C:\Documents and Settings\Administrator\目录下,运行Git Bash he ...

  2. C++进阶--自定义new handler

    //############################################################################ // 自定义new handler /* ...

  3. 【占位符替换】替换String中的占位符标志位{placeholder}

    概述 占位符替换, 占位符表示为:{placeholder}; 示例:替换如下{xxx}占位符中的内容 "名字:{name},年龄:{age},学校:{school}" 提供了两种 ...

  4. .NET数据请求序列化

    这是一个.ner框架中经常用到的数据映射类,此类主要承接业务应用做数据的增删查改操作.通过序列化将查询数据映射为需要的类. 由于经常会用到,这里收藏一下. data用作SQL数据库链接操作: Repo ...

  5. 服务容错保护断路器Hystrix之一:入门示例介绍(springcloud引入Hystrix的两种方式)

    限流知识<高可用服务设计之二:Rate limiting 限流与降级> 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的 ...

  6. Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat)

    ylbtech-Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat) 1.返回顶部 1. Java 实例 - 格式化时间(Sim ...

  7. CentOS搭建SVN服务器,并通过Apache HTTP方式访问

    摘要:本文主要讲述了在centos 6.5环境下搭建svn服务器,可通过svn:\\IP方式访问.同时由于部分公司内网端口限制,并不能访问外网的svn服务器,所以特地结合了apache服务器,使得可以 ...

  8. redis问题:redis-server.exe双击闪退 win10系统

    转:https://blog.csdn.net/qq_40361770/article/details/80454248 解决方法: 1-win+R 打开命令行 2-cd至redis目录,例如 D:\ ...

  9. Hbase设置多个hmaster

    Hbase设置多个hmaster https://www.cnblogs.com/prayer21/p/4866673.html

  10. Java中涉及线程和并发相关的内容

    1:线程池 与每次需要时都创建线程相比,线程池可以降低创建线程的开销,这也是因为线程池在线程执行结束后进行的是回收操作,而不是真正的 销毁线程. 2:ReentrantLock ReentrantLo ...