給你一個二維整數陣列 point
,其中 points[i] = [xi, yi]
表示二維平面內的一個點。同時給你一個整數 w
。你需要用矩形 覆蓋所有 點。
每個矩形的左下角在某個點 (x1, 0)
處,且右上角在某個點 (x2, y2)
處,其中 x1 <= x2
且 y2 >= 0
,同時對於每個矩形都 必須 滿足 x2 - x1 <= w
。
如果一個點在矩形內或者在邊上,我們說這個點被矩形覆蓋了。
請你在確保每個點都 至少 被一個矩形覆蓋的前提下,最少 需要多少個矩形。
注意:一個點可以被多個矩形覆蓋。
思路:貪心演算法
bool cmp(vector<int>& a, vector<int>& b) { return a[0] < b[0]; } class Solution { public: int minRectanglesToCoverPoints(vector<vector<int>>& points, int w) { int res = 1; sort(points.begin(), points.end(), cmp); int l = points[0][0]; for (int i = 1; i < points.size(); i++) { if (points[i][0] <= l + w) continue; l = points[i][0]; res++; } return res; } };