2023-12-14 LeetCode每日一题(用邮票贴满网格图)

2023-12-14每日一题

一、题目编号

2132. 用邮票贴满网格图

二、题目链接

点击跳转到题目位置

三、题目描述

给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。

给你邮票的尺寸为 stampHeight x stampWidth 。我们想将邮票贴进二进制矩阵中,且满足以下 限制要求

  1. 覆盖所有 格子。
  2. 不覆盖任何 被占据 的格子。
  3. 我们可以放入任意数目的邮票。
  4. 邮票可以相互有 重叠 部分。
  5. 邮票不允许 旋转
  6. 邮票必须完全在矩阵

如果在满足上述要求的前提下,可以放入邮票,请返回 true ,否则返回 false 。
示例 1:
在这里插入图片描述

示例 2:
在这里插入图片描述
提示:

  • m == grid.length
  • n == grid[r].length
  • 1 <= m, n <= 105
  • 1 <= m * n <= 2 * 105
  • grid[r][c] 要么是 0 ,要么是 1 。
  • 1 <= stampHeight, stampWidth <= 105

四、解题代码

class Solution {
public:bool possibleToStamp(vector<vector<int>>& grid, int stampHeight, int stampWidth) {int m = grid.size(), n = grid[0].size();vector<vector<int>> sum(m + 2, vector<int>(n + 2, 0));vector<vector<int>> diff(m + 2, vector<int>(n + 2, 0));for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + grid[i - 1][j - 1];}}for (int i = 1; i + stampHeight - 1 <= m; i++) {for (int j = 1; j + stampWidth - 1 <= n; j++) {int x = i + stampHeight - 1;int y = j + stampWidth - 1;if (sum[x][y] - sum[x][j - 1] - sum[i - 1][y] + sum[i - 1][j - 1] == 0) {diff[i][j]++;diff[i][y + 1]--;diff[x + 1][j]--;diff[x + 1][y + 1]++;}}}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {diff[i][j] += diff[i - 1][j] + diff[i][j - 1] - diff[i - 1][j - 1];if (diff[i][j] == 0 && grid[i - 1][j - 1] == 0) {return false;}}}return true;}
};

五、解题思路

(1) 二维前缀和与二维差分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/312688.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易舟云财务软件使用教程【文章目录】

易舟云财务软件使用教程【文章目录】 1、财务软件导论2、易舟云财务软件3、财务软件原理4、账套5、会计凭证6、资金日记账7、发票8、员工工资9、固定资产10、期末处理(结转与结账)11、会计账簿12、财务报表13、财务软件设置 1、财务软件导论 财务软件导论 2、易舟云财务软件 …

CSS 纵向扩展动画

上干货 <template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container&q…

【C# 技术】 C# 常用排序方式——自定义数据排序

C# 常用排序方式——自定义数据排序 前言 在最近的项目中经常会对C#中的数据进行排序&#xff0c;对于基本数据类型&#xff0c;其排序方式比较简单&#xff0c;只需要调用内置算法即可实现&#xff0c;但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦&…

windows和linux操作Git(序章2)

Git 分布式版本控制系统(序章1) ## Linux 下安装 Git&#x1f53a; ​ ## Git命令大全&#x1f53a; windows和linux通用 安装完 Git 后&#xff0c;需要进行配置&#xff0c;如姓名、Email 等 git config --global user.name "你的名字"git config --global us…

【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数

文章目录 &#x1f680;前言&#x1f680;C有何过C之处&#xff1f;&#x1f680;C中的关键字&#x1f680;命名空间✈️为什么要引入命名空间&#xff1f;✈️命名空间的定义✈️如何使用命名空间中的内容呢&#xff1f; &#x1f680;C中的输入和输出✈️C标准库的命名空间✈…

蓝牙物联网灯控设计方案

蓝牙技术是当前应用最广泛的无线通信技术之一&#xff0c;工作在全球通用的 2.4GHZ 的ISM 频段。蓝牙的工作距离约为 100 米&#xff0c;具有一定的穿透性&#xff0c;没有方向限制。具有低成本、抗干扰能力强、传输质量高、低功耗等特点。蓝牙技术组网比较简单&#xff0c;无需…

MySQL Too many connections报错

MySQL 时不时出现Too many connections报错&#xff0c;重启MySQL就好了 但是过段时间又出现 一、解决方案&#xff1a; 1.修改mysql最大连接数 set global max_connections500; 以上是修改立即生效的&#xff0c;重启MySQL就会还原回去 在MySQL配置文件修改 max_connection…

UE蓝图 RPG动作游戏(一) day14

角色创建于增强输入系统与角色重定向 安装Blender插件部署骨骼 创建一个第三人称游戏模版在Mixamo网站下载个模型和骨骼 打开Blender快速重定向&#xff0c;我们需要在Blender里面安装一个插件auto_rig_pro-master&#xff1a;Auto-Rig Pro 是 Blender 的一个插件&#xff0…

掌握C++11标准库(STL):理解STL的核心概念

深入探索C11标准库STL&#xff1a;新特性和优化技巧 一、前言二、容器简介三、迭代器简介四、map与unordered_map&#xff08;红黑树VS哈希表&#xff09;4.1、map和unordered_map的差别4.2、优缺点以及适用处4.3、小结 五、总结 一、前言 STL定义了强大的、基于模板的、可复用…

边缘智能网关在智慧大棚上的应用突破物联网大关

边缘智能网关在智慧大棚上的应用&#xff0c;是现代农业技术的一大突破。通过与农作物生长模型的结合&#xff0c;边缘智能网关可以根据实时的环境数据和历史数据&#xff0c;预测农作物的生长趋势和产量&#xff0c;提供决策支持和优化方案。这对于农民来说&#xff0c;不仅可…

使用STM32 HAL库实现RS232串口通信的步骤和技巧

本文将介绍如何使用STM32 HAL库来实现RS232串口通信&#xff0c;包括步骤、API函数的调用方法和一些技巧。具体将讨论串口配置、发送和接收数据的方法&#xff0c;并提供相关示例代码。 引言&#xff1a; STM32 HAL库为嵌入式系统提供了简化和标准化的编程接口&#xff0c;方便…

Unity坦克大战开发全流程——结束场景——通关界面

结束场景——通关界面 就照着这样来拼 写代码 hideme不要忘了 修改上一节课中的代码