452. Minimum Number of Arrows to Burst Balloons
Input:
[[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).// Greedy Method (sort based on ending position)
int findMinArrowShots(vector<vector<int> >& points) { // time: O(nlogn); space: O(1)
if (points.empty()) return 0;
// Sort by ending location
sort(points.begin(), points.end(), [] (vector<int>& a, vector<int>& b) {
return a[1] < b[1];
});
int arrowPos = points[0][1], res = 1;
for (int i = 1; i < points.size(); ++i) {
if (arrowPos >= points[i][0]) continue;
arrowPos = points[i][1];
++res;
}
return res;
}Last updated