【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