在python中書寫區間函數的方法
1.合并區間
def merge(intervals):'''
@msg: //合并多個區間
@param intervals {list} //一個二維數組,每一項代表一個區間
@return: {list} //返回合并后的區間列表
'''
intervals = [sorted(x) for x in intervals]
intervals.sort(key=lambda x: x[0])
merged = []
for interval in intervals:
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
merged[-1][1] = max(merged[-1][1], interval[1])
return merged
2.判斷區間
def relation(interval1,interval2):
'''
@msg: //判斷兩個區間的關系
@param interval1 {list} //第一個區間
@param interval2 {list} //第二個區間
@return: {int} //返回兩個區間的關系,0:兩個區間相等、1:兩個區間相離、2:兩個區間相交、3:兩個區間為包含關系
'''
min1,max1=sorted(interval1)
min2,max2=sorted(interval2)
if(min1==min2 and max1==max2):return 0
if(max1<min2 or="" max2<min1):return="" 1if(min1<min2<=max1<max2 or="" min2<min1<="max2<max1):return" 2if(min1<=min2<=max2<=max1 or min2<=min1<=max1<=max2):return 3
3.求區間的交集
def intersection(interval1,interval2):
'''
@msg: //求兩個區間的交集
@param interval1 {list} //第一個區間
@param interval2 {list} //第二個區間
@return: {list} //若兩個區間存在交集,則返回交集,否則返回空列表
'''
nums=sorted(interval1+interval2)
if relation(interval1,interval2) != 1:
return [nums[1],nums[2]]
else:return []