Skip to content

Commit

Permalink
feat: add minimum-number-of-arrows-to-burst-balloons
Browse files Browse the repository at this point in the history
Change-Id: I938311de832bdb93b3ffd95d1add3ebe57c8efd5
  • Loading branch information
franklingu committed Oct 10, 2020
1 parent 60b906a commit 31fbb53
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ LeetCode is a very good website to sharpen your programming/problem-solving skil
|445|[Add Two Numbers II](https://leetcode.com/problems/add-two-numbers-ii/)|[Python](./algorithms/add-two-numbers-ii/)|![Medium](https://img.shields.io/badge/-Medium-orange)|
|448|[Find All Numbers Disappeared in an Array](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/)|[Java](./algorithms/find-all-numbers-disappeared-in-an-array/)|![Easy](https://img.shields.io/badge/-Easy-green)|
|449|[Serialize and Deserialize BST](https://leetcode.com/problems/serialize-and-deserialize-bst/)|[Python](./algorithms/serialize-and-deserialize-bst/)|![Medium](https://img.shields.io/badge/-Medium-orange)|
|452|[Minimum Number of Arrows to Burst Balloons](https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/)|[Python](./algorithms/minimum-number-of-arrows-to-burst-balloons/)|![Medium](https://img.shields.io/badge/-Medium-orange)|
|461|[Hamming Distance](https://leetcode.com/problems/hamming-distance/)|[Java](./algorithms/hamming-distance/)|![Easy](https://img.shields.io/badge/-Easy-green)|
|485|[Max Consecutive Ones](https://leetcode.com/problems/max-consecutive-ones/)|[Java](./algorithms/max-consecutive-ones/)|![Easy](https://img.shields.io/badge/-Easy-green)|
|496|[Next Greater Element I](https://leetcode.com/problems/next-greater-element-i/)|[Python](./algorithms/next-greater-element-i/)|![Easy](https://img.shields.io/badge/-Easy-green)|
Expand Down
53 changes: 53 additions & 0 deletions algorithms/minimum-number-of-arrows-to-burst-balloons/Solution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"""
There are some spherical balloons spread in two-dimensional space. For each balloon, provided input is the start and end coordinates of the horizontal diameter. Since it's horizontal, y-coordinates don't matter, and hence the x-coordinates of start and end of the diameter suffice. The start is always smaller than the end.
An arrow can be shot up exactly vertically from different points along the x-axis. A balloon with xstart and xend bursts by an arrow shot at x if xstart ≤ x ≤ xend. There is no limit to the number of arrows that can be shot. An arrow once shot keeps traveling up infinitely.
Given an array points where points[i] = [xstart, xend], return the minimum number of arrows that must be shot to burst all balloons.
Example 1:
Input: points = [[10,16],[2,8],[1,6],[7,12]]
Output: 2
Explanation: One way is to shoot one arrow for example at x = 6 (bursting the balloons [2,8] and [1,6]) and another arrow at x = 11 (bursting the other two balloons).
Example 2:
Input: points = [[1,2],[3,4],[5,6],[7,8]]
Output: 4
Example 3:
Input: points = [[1,2],[2,3],[3,4],[4,5]]
Output: 2
Example 4:
Input: points = [[1,2]]
Output: 1
Example 5:
Input: points = [[2,3],[2,3]]
Output: 1
Constraints:
0 <= points.length <= 104
points.length == 2
-231 <= xstart < xend <= 231 - 1
"""


class Solution:
def findMinArrowShots(self, points: List[List[int]]) -> int:
points.sort(key=lambda x:(x[1],x[0]))
prev, ret = None, 0
for p in points:
if prev is None:
prev = p[1]
ret += 1
continue
if prev < p[0]:
prev = p[1]
ret += 1
return ret

0 comments on commit 31fbb53

Please sign in to comment.