Given an array of balloon intervals, 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: An arrow at x = 6 bursts [2,8] and [1,6]. A second arrow at x = 11 bursts [10,16] and [7,12]. One arrow cannot hit all four, so 2 is the minimum.
Example 2
Input: points = [[1,2],[3,4],[5,6],[7,8]]
Output: 4
Explanation: The balloons do not overlap at all, so each one needs its own arrow: 4 arrows.
Example 3
Input: points = [[1,2],[2,3],[3,4],[4,5]]
Output: 2
Explanation: An arrow at x = 2 bursts [1,2] and [2,3] (they share the point 2), and an arrow at x = 4 bursts [3,4] and [4,5]. That is 2 arrows.
This is the classic *interval point-cover* problem. After sorting balloons by their *ending* coordinate, the first balloon's right edge is the earliest moment we *must* shoot. Shooting exactly there bursts every overlapping balloon — extending leftwards costs nothing. Then advance to the first balloon that starts *after* this shot and repeat.
Run checks all cases above. Submit evaluates all test cases.