Datawhale leetcode day6 NO_452.用最少数量的箭引爆气球

在这里插入图片描述

今天这题是medium难度的,读题就花了一点时间,简化之后就是按照我们数学人的思维就是,求出 k k 个区间的交集有多少个互不相交的区间。emmmm好像有点拗口。
至此我参考了B站花花酱的视频截图。这样大家对题目有比较直观的了解。

在这里插入图片描述

算法思想是,先根据区间上界做排序,我们把这个区间叫第一小区间,然后和下一个区间的区间下界做比较,我们把这个叫第二小区间,如果第一小区间的上界依然大于第二小区间的下界,那么这两个区间就一定有非空交集,那么只一只箭穿过这两个区间(气球),如果第 i i 小区间的上界小于第 i + 1 i+1 小区间的下界,那么要穿过第 i + 1 i+1 小区间就必须再用一只箭才可以,同理顺次往下比较。

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        balloon = sorted(points, key = lambda x: x[1])
        #我们按照区间上界排序,用到的是按关键词排序,复习一下sorted()
        arrow, inf= 0, -float('inf')
        #我们先初始化下界为一个小于0的数,并且很小,因为区间从0开始
        for interval in points:
            if interval[0] > end:
                arrow += 1
                inf = interval[1]
        return arrow

猜你喜欢

转载自blog.csdn.net/qq_35547281/article/details/89046342
今日推荐