间隔输出错误

时间:2019-06-29 18:36:42

标签: python-3.x

我遇到了一个面试问题,决定尝试一下。 问题如下:给定一组封闭的间隔,找到覆盖所有间隔的最小数字集。如果有多个最小集,请返回其中的任意一个。

例如,给定间隔[0,3],[2,6],[3,4],[6,9],覆盖所有这些间隔的一组数字为{3,6}。 / p>

我的代码如下:

def findIntersection(intervals): 
"""
find the intersection of a list of intersections.
"""

# First interval 
l = intervals[0][0] #lower component
r = intervals[0][1] #higher component

# Check rest of the intervals  
# and find the intersection 
for i in range(1,len(intervals)): 
    interval=[l,r]
    # If no intersection exists 
    if (intersecting(intervals[i],interval)):  
        print() 

    # Else update the intersection 
    else: 
        l = max(l, intervals[i][0])
        r = min(r, intervals[i][1]) 
        interval=[l,r]

return([l, r]) 
def intersecting(x, y):
"""
Return a boolean indicaing if 2 intervals (x,y) are intersecting
"""
return(y[0] > x[1] or x[0] > y[1])

l=[[0, 3], [2, 6], [3, 4], [6, 9]]

print(findIntersection(l) #this does not work
intervals= [ [ 1, 6 ], [ 2, 8 ], [ 3, 10 ], [ 5, 8 ]] 


print(findIntersection(intervals))# this works`

对于输入l:输出为[3,9],这不是答案。间隔输出为[5,6],这是预期的。

1 个答案:

答案 0 :(得分:0)

使用设置工具中的交点功能并不容易。

喜欢

s1 = set([1,2,3])
s2 = set([2,3,4,5])
print(s1.intersection(s2))