classSolution { public: intfindMinArrowShots(vector<vector<int>>& points){ int n = points.size(); if (n <= 1) { return n; } // 按照右端点,从小到大排序 sort(points.begin(), points.end(), [](vector<int>& a, vector<int>& b) { return a[1] < b[1]; }); int ans = 1; // 最少需要一支箭矢 int end = points[0][1]; for (int i = 1; i < n; i++) { if (points[i][0] > end) { // 这种情况说明左端点已经超出了区间 ans++; end = points[i][1]; } } return ans; } };