LeetCode:3111. 覆盖所有点的最少矩形数目(贪心 Java)

ops/2024/10/20 21:07:38/

目录

3111. 覆盖所有点的最少矩形数目

题目描述:

实现代码与解析:

贪心

原理思路:


3111. 覆盖所有点的最少矩形数目

题目描述:

        给你一个二维整数数组 point ,其中 points[i] = [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。

每个矩形的左下角在某个点 (x1, 0) 处,且右上角在某个点 (x2, y2) 处,其中 x1 <= x2 且 y2 >= 0 ,同时对于每个矩形都 必须 满足 x2 - x1 <= w 。

如果一个点在矩形内或者在边上,我们说这个点被矩形覆盖了。

请你在确保每个点都 至少 被一个矩形覆盖的前提下,最少 需要多少个矩形。

注意:一个点可以被多个矩形覆盖。

示例 1:

输入:points = [[2,1],[1,0],[1,4],[1,8],[3,5],[4,6]], w = 1

输出:2

解释:

上图展示了一种可行的矩形放置方案:

  • 一个矩形的左下角在 (1, 0) ,右上角在 (2, 8) 。
  • 一个矩形的左下角在 (3, 0) ,右上角在 (4, 8) 。

示例 2:

输入:points = [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6]], w = 2

输出:3

解释:

上图展示了一种可行的矩形放置方案:

  • 一个矩形的左下角在 (0, 0) ,右上角在 (2, 2) 。
  • 一个矩形的左下角在 (3, 0) ,右上角在 (5, 5) 。
  • 一个矩形的左下角在 (6, 0) ,右上角在 (6, 6) 。

示例 3:

输入:points = [[2,3],[1,2]], w = 0

输出:2

解释:

上图展示了一种可行的矩形放置方案:

  • 一个矩形的左下角在 (1, 0) ,右上角在 (1, 2) 。
  • 一个矩形的左下角在 (2, 0) ,右上角在 (2, 3) 。

提示:

  • 1 <= points.length <= 105
  • points[i].length == 2
  • 0 <= xi == points[i][0] <= 109
  • 0 <= yi == points[i][1] <= 109
  • 0 <= w <= 109
  • 所有点坐标 (xi, yi) 互不相同。

实现代码与解析:

贪心

java">class Solution {public int minRectanglesToCoverPoints(int[][] points, int w) {int res = 0;int n = points.length;// 按照x值排序Arrays.sort(points, (a, b) -> {return a[0] - b[0];});int r = -1;for (int i = 0; i < n; i++) {int l = points[i][0];if (l <= r) continue;else {r = l + w;res ++;}}return res;}
}

原理思路:

        贪心,因为矩形只限制宽度,所以可以不用考虑高度的影响,根据x大小排序,顺序处理,每次矩形用左边界放节点最大可能的去包含右侧节点(总是最大宽度),如果节点没有被包含,就新添加一个矩形。


http://www.ppmy.cn/ops/89027.html

相关文章

探索 Electron:打造深度书籍挖掘机的搜索体验

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序&#xff0c;它的出现极大地简化了桌面应用程序的开发流程&#xff0c;让更多的开发者能够利用已有的 Web 开发技能…

Null Reference: 避免和解决空引用错误

Null Reference: 避免和解决空引用错误 &#x1f6ab; **Null Reference: 避免和解决空引用错误 &#x1f6ab;**摘要引言正文内容1. 理解空引用错误1.1 什么是空引用1.2 空引用的影响 2. 空引用错误的常见原因2.1 未初始化的变量2.2 访问已被清空的对象2.3 方法返回空引用 3. …

elasticsearch源码分析-08Serch查询流程

Serch查询流程 查询请求Rest路由注册也是在actionModule中 //查询操作 registerHandler.accept(new RestSearchAction());Override public List<Route> routes() {return unmodifiableList(asList(new Route(GET, "/_search"),new Route(POST, "/_searc…

如果我是一名全能的工程师

今天的工作&#xff0c;让我深刻体会到为什么这两年&#xff0c;全栈这个词特别火&#xff0c;而且几乎每一家培训机构都在用全栈来推广他们的课程。 真正优秀的测试功能师&#xff0c;并不是单一的&#xff0c;能够从本身的功能里面找到多少BUG&#xff0c;或者说&#xff0c…

AI人工智能分析王楚钦球拍被踩事件的真相

在2024年巴黎奥运会乒乓球混双决赛的热烈氛围中&#xff0c;中国队王楚钦与孙颖莎以出色的表现夺得金牌&#xff0c;然而&#xff0c;赛后发生的一起意外事件——王楚钦的球拍被踩坏&#xff0c;引起了广泛关注和热议。为了探寻这一事件的真相&#xff0c;我们可以借助AI人工智…

redis面试(四)ZSet数据结构

Sorted Set 有序集合ZSet&#xff0c;但是有序集合的英文明明是sorted sets。 那这个“Z”代表什么意思&#xff0c;这点官网没有解释&#xff0c;但是gitHub上有人问过&#xff0c;作者是这样回答的 Hello. Z is as in XYZ, so the idea is, sets with another dimension: t…

前端WebSocket入门,看这篇就够啦!!

在HTML5 的早期开发过程中&#xff0c;由于意识到现有的 HTTP 协议在实时通信方面的不足&#xff0c;开发者开始探索能够在 Web 环境下实现双向实时通信的新的通信协议&#xff0c;提出了 WebSocket 协议的概念。 一、什么是 WebSocket&#xff1f; WebSocket 是一种在单个 T…

DLMS/COSEM中的信息安全:DLMS/COSEM安全概念(下)

3.安全语境 安全语境定义了与加密转换有关的安全属性,并包括以下元素: ——安全组件,确定可用的安全算法。 ——安全策略,在AA内对所有xDLMS APDU确定将应用的那种保护; ——与给定的安全算法相关的安全资料,包含安全密钥、初始化向量、公共密钥证书等。由于安全资料是针…