''' 解题思路: 区间不断合并,没有交集时,需要一支箭 ''' class Solution: def findMinArrowShots(self, points: List[List[int]]) -> int: P = points n = len(points) P = sorted(P,key=lambda x:x[0]) print(P) S = P[0] k = 0 for i in range(1,n): N = P[i] if N[0]<=S[1]: S = [N[0],min(S[1],N[1])] else: k += 1 S = N return k+1 points = [[10,16],[2,8],[1,6],[7,12]] # 2 points = [[1,2],[3,4],[5,6],[7,8]] # 4 points = [[1,2],[2,3],[3,4],[4,5]] # 2 points = [[1,2]] # 1 points = [[2,3],[2,3]] # 1 t = Solution().findMinArrowShots(points) print(t)