3111. 覆蓋所有點的最少矩形數目

mysteryily發表於2024-07-31

給你一個二維整數陣列 point ,其中 points[i] = [xi, yi] 表示二維平面內的一個點。同時給你一個整數 w 。你需要用矩形 覆蓋所有 點。

每個矩形的左下角在某個點 (x1, 0) 處,且右上角在某個點 (x2, y2) 處,其中 x1 <= x2y2 >= 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;
    }
};

相關文章