给定坐标轴上的一组线段,线段的起点和终点均为整数并且长度不小于1,请你从中找到最少数量的线段,这些线段可以覆盖住所有线段。”
输入描述为:第一行输入为所有线段的数量,不超过10000,后面每行表示一条线段,格式为“x,y”, x和y分别表示起点和终点,取值范围是[-10^5,10^5]。
输出描述为:最少线段数量,为正整数。
segments = [(1,4),(2,5),(3,6)]
segments.sort()
print(segments)
stack=[segments[0]]
for i in range(1,len(segments)):
while True:
top_segment=stack[-1] if stack else None
if top_segment is None:
stack.append(segments[i])
break
elif segments[i][0]<=top_segment[0] and segments[i][1]>=top_segment[1]:
stack.pop()
elif top_segment[1]>segments[i][0]>top_segment[0] and segments[i][1]>top_segment[1]:
stack.append([top_segment[1],segments[i][1]])
break
elif segments[i][0]>top_segment[1]:
stack.append(segments[i])
break
else:
break
print(len(stack))