2024/7/31 每日一題

Koonan-Edogawa發表於2024-07-31

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

方法1:貪心

class Solution:
    def minRectanglesToCoverPoints(self, points: List[List[int]], w: int) -> int:
        lst = sorted(set(x for x, _ in points))
        ans, idx, i = 1, 0, 0  # 位於第一個
        while i < len(lst):
            if lst[i] - lst[idx] > w:
                ans += 1; idx = i
            i += 1
        return ans
class Solution {
    public int minRectanglesToCoverPoints(int[][] points, int w) {
        Arrays.sort(points, (a, b) -> Integer.compare(a[0], b[0]));
        int ans = 0, high = -1;  // 最高值
        for(int[] info : points) {
            if(info[0] > high) {
                high = info[0] + w;  // 更新最高值
                ans++;
            }
        }
        return ans;
    }
}

相關文章