【leetcode】452. Minimum Number of Arrows to Burst Balloons

题目如下:

解题思路:本题可以采用贪心算法。首先把balloons数组按end从小到大排序,然后让第一个arrow的值等于第一个元素的end,依次遍历数组,如果arrow不在当前元素的start到end的区间,表示这个arrow不能刺破气球,arrow总数加一,然后令arrow继续等于当前这个元素的end,直到数组遍历完成。

代码如下:

class Solution(object):
    def findMinArrowShots(self, points):
        """
        :type points: List[List[int]]
        :rtype: int
        """
        def cmpf(l1,l2):
            if l1[1] != l2[1]:
                return l1[1] - l2[1]
            return l2[0] - l1[0]
        points.sort(cmp = cmpf)
        res = 0
        arrow = None
        for i in points:
            if arrow != None and arrow >= i[0] and arrow <= i[1]:
                continue
            else:
                arrow = i[1]
                res += 1
        return res

 

posted @ 2018-09-26 22:04  seyjs  阅读(118)  评论(0编辑  收藏  举报