/** * 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; };