-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy path0452-minimum-number-of-arrows-to-burst-balloons.js
42 lines (38 loc) · 1.39 KB
/
0452-minimum-number-of-arrows-to-burst-balloons.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
* 452. Minimum Number of Arrows to Burst Balloons
* https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/
* Difficulty: Medium
*
* There are some spherical balloons taped onto a flat wall that represents the XY-plane.
* The balloons are represented as a 2D integer array points where points[i] = [xstart, xend]
* denotes a balloon whose horizontal diameter stretches between xstart and xend. You do not
* know the exact y-coordinates of the balloons.
*
* Arrows can be shot up directly vertically (in the positive y-direction) from different points
* along the x-axis. A balloon with xstart and xend is burst by an arrow shot at x if
* x(start) <= x <= x(end). There is no limit to the number of arrows that can be shot. A shot
* arrow keeps traveling up infinitely, bursting any balloons in its path.
*
* Given the array points, return the minimum number of arrows that must be shot to burst all
* balloons.
*/
/**
* @param {number[][]} points
* @return {number}
*/
var findMinArrowShots = function(points) {
let result = 0;
let i = 0;
points.sort(([a], [b]) => a - b);
while (i < points.length) {
let [left, right] = points[i];
i++;
while (i < points.length && points[i][0] <= right && points[i][1] >= left) {
left = Math.max(left, points[i][0]);
right = Math.min(right, points[i][1]);
i++;
}
result++;
}
return result;
};