当前位置: 首页 > 面试经验 >

【华为OD机试2023】最少数量线段覆盖Python

优质
小牛编辑
118浏览
2023-03-28

【华为OD机试2023】最少数量线段覆盖Python

题目描述:

给定坐标轴上的一组线段,线段的起点和终点均为整数并且长度不小于1,请你从中找到最少数量的线段,这些线段可以覆盖住所有线段。

输入描述:

第一行输入为所有线段的数量,不超过10000,后面每行表示一条线段,格式为"x,y",x和y分别表示起点和终点,取值范围是[-105,105]。

输出描述:

最少线段数量,为正整数

示例1

输入:

3

1,4

2,5

3,6

输出:

2

说明:

选取2条线段[1,4]和[3,6]即可,这两条线段可以覆盖[2,5]


n=int(input())
xianduans=[list(map(int,input().split(','))) for i in range(n)]
xianduans=sorted(xianduans,key=lambda x:(x[0],x[1]))
right=xianduans[0][1]
max_right=max(xianduan[1] for xianduan in xianduans)
count=1
while right<max_right:
temp=[]
for xianduan in xianduans:
if xianduan[0]<=right:
temp.append(xianduan)
else:
break
right=max(xianduan[1] for xianduan in temp)
count+=1
print(count)

 类似资料: