LeetCode刷题记录day5:挑选代表(招行信用卡)

我们有很多区域,每个区域都是从a到b的闭区间,现在我们要从每个区间中挑选至少2个数,那么最少挑选多少个?

输入描述:

第一行是N(N<10000),表示有N个区间,之间可以重复
然后每一行是ai,bi,持续N行,表示现在区间。均小于100000

输出描述:

输出一个数,代表最少选取数量。

输入例子1:

4
4 7
2 4
0 2
3 6

输出例子1:

4

参考贪心算法题目:

https://blog.csdn.net/weixin_42564710/article/details/97558575?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

def checkRes(num, nums):
    sol = []
    sol.append(nums[0][1]-1)
    sol.append(nums[0][1])
    for i in range(num-1):
        if nums[i+1][0] == sol[-1]: #区间相邻
            sol.append(nums[i+1][1])
        elif nums[i+1][0] > sol[-1]:#区间相离
            sol.append(nums[i+1][1]-1)
            sol.append(nums[i+1][1])
    return len(sol)
if __name__=='__main__':
    n = int(input())
    res = []
    for _ in range(n):
        res.append(list(map(int,input().split())))
    res.sort(key=lambda x:x[1]) #区间排序
    print(checkRes(n,res))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值