我遇到了一个面试问题,决定尝试一下。 问题如下:给定一组封闭的间隔,找到覆盖所有间隔的最小数字集。如果有多个最小集,请返回其中的任意一个。
例如,给定间隔[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],这是预期的。
答案 0 :(得分:0)
使用设置工具中的交点功能并不容易。
喜欢
s1 = set([1,2,3])
s2 = set([2,3,4,5])
print(s1.intersection(s2))