leetcode做题笔记2132. 用邮票贴满网格图

news2024/9/23 16:23:50

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

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

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

如果在满足上述要求的前提下,可以放入邮票,请返回 true ,否则返回 false 。

示例 1:

输入:grid = [[1,0,0,0],[1,0,0,0],[1,0,0,0],[1,0,0,0],[1,0,0,0]], stampHeight = 4, stampWidth = 3
输出:true
解释:我们放入两个有重叠部分的邮票(图中标号为 1 和 2),它们能覆盖所有与空格子。

思路一:差分数组

c++解法

class Solution {
public:
    bool possibleToStamp(vector<vector<int>>& grid, int stampHeight, int stampWidth) {
        int n = grid.size(),m = grid[0].size();
        vector<vector<int>> pre(n+3,vector<int>(m+3,0));
        vector<vector<int>> dif(n+3,vector<int>(m+3,0));
        for(int i = 0;i<n;i++)
        {
            for(int j = 0;j<m;j++)
            {
                pre[i+1][j+1] = pre[i][j+1]+pre[i+1][j]-pre[i][j]+grid[i][j];
            }
        }
        for(int i = 1;i+stampHeight-1<=n;i++)
        {
            for(int j = 1;j+stampWidth-1<=m;j++)
            {
                int nx = i+stampHeight-1,ny = j+stampWidth-1;
                if(pre[nx][ny]-pre[i-1][ny]-pre[nx][j-1]+pre[i-1][j-1]==0)
                {
                    dif[i][j]++;
                    dif[nx+1][j]--;
                    dif[i][ny+1]--;
                    dif[nx+1][ny+1]++;
                }
            }
        }
        for(int i = 1;i<=n;i++)
        {
            for(int j = 1;j<=m;j++)
            {
                dif[i][j] += dif[i-1][j]+dif[i][j-1]-dif[i-1][j-1];
                if(!grid[i-1][j-1]&&!dif[i][j]) return false;
            }
        }
        return true;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE中如果让全局组件在某一页面不显示

目录 前言 方法一 1.在全局组件中添加一个变量用于控制显示与隐藏。 2.在全局组件的模板中使用 v-if 条件来决定是否显示该组件 3.在不需要显示全局组件的页面中&#xff0c;修改 showGlobalComponent 变量的值为 false&#xff0c;以隐藏全局组件。 4.在需要隐藏全局组…

dockerfile---创建镜像

dockerfile创建镜像&#xff1a;创建自定义镜像。 包扩配置文件的创建&#xff0c;挂载点&#xff0c;对外暴露的端口。设置环境变量。 docker镜像的方式: 1、基于官方源进行创建 根据官方提供的镜像源&#xff0c;创建镜像&#xff0c;然后拉起容器。是一个白板&#xff0c…

国产猫粮推荐排行榜有哪些牌子?国产主食冻干猫粮品牌十大排行

近年来&#xff0c;冻干猫粮作为热门的高品质猫粮&#xff0c;受到了许多追求纯天然、健康食品的铲屎官的关注。萌新铲屎官就很疑惑了冻干猫粮可以代替猫粮作为主食吗&#xff1f;冻干猫粮真就那么好吗&#xff1f; 作为一个猫咖店长&#xff0c;这几年我至少给猫挑选了20几款…

智能故障诊断期刊推荐【中文期刊】

控制与决策 http://kzyjc.alljournals.cn/kzyjc/home 兵工学报 http://www.co-journal.com/CN/1000-1093/home.shtml 计算机集成制造系统 http://jsjjc.soripan.net/ 机械工程学报 http://www.cjmenet.com.cn/CN/0577-6686/home.shtml 太阳能学报 https://www.tynxb.org.c…

Windows ❀ 关闭Google的自动更新功能

文章目录 1. 故障问题2. 解决方法 1. 故障问题 如何关闭掉Google的自动更新功能&#xff1f; 2. 解决方法 修改更新域名本地hosts为环回地址即可。 # 禁止google自动更新 127.0.0.1 update.googleapis.com备注&#xff1a; mac路径&#xff1a;/etc/hostswindows路径&…

SpringBoot之数组,集合,日期参数的详细解析

1.4 数组集合参数 数组集合参数的使用场景&#xff1a;在HTML的表单中&#xff0c;有一个表单项是支持多选的(复选框)&#xff0c;可以提交选择的多个值。 多个值是怎么提交的呢&#xff1f;其实多个值也是一个一个的提交。 后端程序接收上述多个值的方式有两种&#xff1a; 数…

EM的理论基础

1 EM定义​ 电迁移(Electro-Migration)是指在外加电场下,电子和金属原子之间的动量转移导致材料的运动。这种动量传递导致金属原子(比如Cu原子)从其原始位置移位,如图7-1。这种效应随着导线中电流密度的增加而增加,并且在更高的温度下,动量传递变得更加严重。因此,在先…

2023全球开发者生态调研:84%的开发者表示他们在工作中正积极使用生成式AI工具

今年JetBrains首次在一年一度的开发者生态调研中&#xff0c;增加了人工智能方向的问题。在全球26348名开发者参与的调研中&#xff0c;总体对人工智能的发展持乐观态度。特别是生成式AI在软件开发和编程环节中的应用&#xff0c;84%的开发者表示他们在工作中正在积极使用生成式…

【STM32CubeMX】F103 BxCAN

F103&BxCAN bxCAN总体描述 有一个增强的过滤机制来处理各种类型的报文此外&#xff0c;应用层任务需要更多CPU时间&#xff0c;因此报文接收所需的实时响应程度需要减轻。 接收FIFO的方案允许&#xff0c;CPU花很长时间处理应用层任务而不会丢失报文。 构筑在底层CAN驱动程…

MySQL增量备份与恢复

实验环境 某学校近期在进行期中考试&#xff0c;要求数据库管理员负责一班&#xff0c;二班学生的考试成绩录入&#xff0c;为保证数据的可靠性&#xff0c;数据库管理员在录入学生成绩后均要做数据库备份&#xff0c;并且为了测试备份数据是否可 用&#xff0c;模拟数据丢失故…

柯桥日常英语口语,外贸英语商务英语|英文打电话的常用语

日常生活中&#xff0c;我们常常需要打电话交流。在打电话时说话清楚&#xff0c;使用适当的礼节是很重要的。 如果你太正式&#xff0c;人们在和你说话时&#xff0c;可能会很难感到舒适。如果你太随便&#xff0c;他们可能会认为你很粗鲁&#xff01; 所以&#xff0c;说话的…

Jmeter,提取响应体中的数据:正则表达式、Json提取器

一、正则表达式 1、线程组--创建线程组&#xff1b; 2、线程组--添加--取样器--HTTP请求&#xff1b; 3、Http请求--添加--后置处理器--正则表达式提取器&#xff1b; 4、线程组--添加--监听器--查看结果树&#xff1b; 5、线程组--添加--取样器--调试取样器。 响应体数据…

Disruptor详解,Java高性能内存队列最优解

文章目录 一、Disruptor介绍1、为什么要有Disruptor2、Disruptor介绍3、Disruptor的高性能设计4、RingBuffer数据结构5、等待策略6、Disruptor在日志框架中的应用7、术语 二、Disruptor实战1、引入依赖2、Disruptor构造器3、入门实例&#xff08;1&#xff09;Hello World&…

MATLAB 绘制伯德图之将幅频特性和相频特性分开绘制方法

幅频和相频特性分别在两个图窗&#xff0c;不在一起方便保存&#xff0c;无需再裁剪 clear; close all; k 1; numH 1; denH [1,k]; sysH tf(numH,denH); w logspace(-2,2);[mag, phase] bode(sysH,w);% 幅频特性 loglog(w,squeeze(mag));grid on; % 相频特性 semilogx(…

在springboot中引入参数校验

一、概要 一般我们判断前端传过来的参数&#xff0c;需要对某些值进行判断&#xff0c;是否满足条件。 而springboot相关的参数校验注解&#xff0c;可以解决我们这个问题。 二、快速开始 首先&#xff0c;我用的springboot版本是 3.1.5 引入参数校验相关依赖 <!--1…

数据之美:零售业的变革之道

数据可视化能够为零售业带来令人瞩目的变化。随着零售业务的发展&#xff0c;数据可视化成为了洞察市场、优化运营并提升客户体验的强大工具。下面我就以可视化从业者的视角出发&#xff0c;简单分析一下数据可视化为零售业可能带来的改变。 数据可视化让零售商深入了解消费者行…

邮政快递物流查询,分析筛选出提前签收件

批量查询邮政快递单号的物流信息&#xff0c;将提前签收件分析筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 邮政快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左上角…

从 AST 到代码生成:代码背后的秘密花园(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

JS基础之执行上下文

JS基础之执行上下文 执行上下文顺序执行可执行代码执行上下文栈回顾上文 执行上下文 顺序执行 写个JavaScript的开发者都会有个直观的印象&#xff0c;那就是顺序执行&#xff1a; var foo function(){console.log(foo1) } foo(); //foo1 var foo function(){console.log(…

ES分词查询

全文检索介绍 全文检索的发展过程&#xff1a; 数据库使用SQL语句&#xff1a;select * from table where data like “%检索内容%”出现lucene全文检索工具&#xff08;缺点&#xff1a;暴露的接口相对复杂&#xff0c;且没有效率&#xff09;出现分布式检索服务框架solr&am…