多源BFS - 01矩阵

LCR 107. 01 矩阵

到最近的0的距离,对每一个非0的位置进行搜索,找到最短的距离即可,但如果对每一个非0的点都进行一次搜索的话,肯定是会超时的。这里可以考虑,将所有0点想象成一个0点(超级0)。然后找到所有1点到超级0的距离即可。

class Solution {
public:int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {int n = mat.size(), m = mat[0].size();vector<vector<int>> dist(n, vector<int>(m, 0));vector<vector<int>> st(n, vector<int>(m));queue<pair<int,int>> q;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (mat[i][j] == 0){st[i][j] = 1;q.push({i, j});}}}while (!q.empty()) {auto t = q.front();q.pop();int x = t.first;int y = t.second;for (int i = 0; i < 4; i++){int xx = x + dx[i];int yy = y + dy[i];if (xx >= 0 && xx < n && yy >= 0 && yy < m && !st[xx][yy]){st[xx][yy] = 1;dist[xx][yy] = dist[x][y] + 1;q.push({xx, yy});}}}return dist;}
};

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

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

相关文章

第 6 章 ROS-URDF练习(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 6.3.4 URDF练习 需求描述: 创建一个四轮圆柱状机器人模型&#xff0c;机器人参数如下&#xff0c;底盘为圆柱…

腾讯云优惠券、代金券、折扣券领取方法及使用教程

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为广大用户提供高效、稳定、安全的云服务。为了吸引用户上云&#xff0c;腾讯云经常推出各种优惠活动&#xff0c;其中就包括腾讯云优惠券。下面小编将详细介绍腾讯云优惠券的相关信息&#xff0c;包括种类、领取入…

链动3+1模式 全新升级 解决小号和断代问题!!!

随着数字经济的蓬勃发展&#xff0c;市场竞争愈演愈烈&#xff0c;传统的商业模式显得捉襟见肘&#xff0c;难以满足企业快速发展的需求。在这种背景下&#xff0c;一种创新的商业模式——“链动31”应运而生&#xff0c;以其独特的玩法和优势&#xff0c;引领着市场发展的新方…

Python面向对象三大特征(封装、继承、多态)

面向对象编程的三大特征&#xff1a;封装、继承和多态。 注意&#xff1a;在python面向对象编程中&#xff0c;子类对象可以传递给父类类型 一、封装 在Python中&#xff0c;封装是面向对象编程中的一种重要概念&#xff0c;它可以帮助我们实现数据隐藏、信息保护和代码复用。…

阻止默认行为 e.preventDefault()搭配passive:false才有效

正确情况 如果想阻止默认行为,那么 e.preventDefault()搭配passive:false才是正解 document.addEventListener(touchmove,(e)>{ e.preventDefault() console.log(123,123);},{passive:false}) 如果搭配 passive:false,则会报警告 e.preventDefault()搭配passive:true会报…

蓝桥杯-礼物-二分查找

题目 思路 --刚开始想到暴力尝试的方法&#xff0c;但是N太大了&#xff0c;第一个测试点都超时。题目中说前k个石头的和还有后k个石头的和要小于s&#xff0c;在这里要能想到开一个数组来求前n个石头的总重&#xff0c;然后求前k个的直接将sum[i]-sum[i-k-1]就行了&#xff0…

vue3,ref和reactive声明变量有什么区别,分别怎么用

vue/vue3&#xff0c;ref和reactive声明变量有什么区别&#xff0c;分别怎么用 适用的变量类型不同在js中获取值的方式不同侦听深度不同响应性区别 适用的变量类型不同 对于原始类型&#xff0c;即非对象类型&#xff0c;只能用ref对于对象类型&#xff0c;既可以用ref&#x…

软考中高级案例分析通用答题方法

在软考高级信息系统项目管理师和中级系统集成项目管理工程师考试中&#xff0c;案例分析是一个重要的题型。下面分享几种通用答题方法和个人经验&#xff0c;希望能对大家有所帮助。 历年考试中经常考察的内容 首先&#xff0c;范围管理、进度管理、成本管理、质量管理这四大管…

Mongo 常用操作命令

一、查询都有哪些数据库 show dbs二、切换到指定数据库 use database 三、删除数据库 注意&#xff1a;需要先切换到指定数据库&#xff0c;再执行删除指令 db.dropDatabase()四、显示数据库都有哪些数据表 show tables 五、查看整个数据库的统计情况 db.stats() 六、查…

C++ 子序列

目录 最长递增子序列 摆动序列 最长递增子序列的个数 最长数对链 最长定差子序列 最长的斐波那契子序列的长度 最长等差数列 等差数列划分 II - 子序列 最长递增子序列 300. 最长递增子序列 子数组是连续的&#xff0c;子序列可以不连续&#xff0c;那么就要去[0, i - 1]…

学习AI为啥要掌握高等数学中的线性代数

人工智能为啥要掌握高等数学中的线性代数&#xff0c;这是因为线性代数在人工智能领域扮演着至关重要的角色&#xff0c;其作用体现在以下几个方面&#xff1a; 数据表示&#xff1a; •线性代数中的向量和矩阵是描述和组织数据的重要工具&#xff0c;尤其在机器学习和深度学习…

seleniumui自动化实例-邮箱登录

1.登录163邮箱源码&#xff1a; from selenium import webdriver driver webdriver.Firefox() driver.get("http://www.163.com") driver.find_element_by_id("id").clear() driver.find_element_by_id("id").send_keys("用户名")…

【CKA模拟题】掌握Pod日志输出的秘密

题干 For this question, please set this context (In exam, diff cluster name) 对于这个问题&#xff0c;请设置这个上下文(在考试中&#xff0c;diff cluster name) kubectl config use-context kubernetes-adminkubernetes product pod is running. when you access log…

【算法刷题day1】Leetcode:704. 二分查找、27. 移除元素

Leetcode 704&#xff1a;标准二分查找 文档讲解&#xff1a;代码随想录 题目链接&#xff1a;704.二分查找 状态&#xff1a;稳定输出 题目&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 n…

在Linux环境底下 用C语言执行Python程序

在Linux环境底下 用C语言执行Python程序 文章目录 在Linux环境底下 用C语言执行Python程序1、环境安装&检测2、C语言调用Python语句2.1 直接调用python语句2.2 调用无参python函数2.3 调用有参python函数 1、环境安装&检测 通过C语言调用Python代码&#xff0c;需要先安…

springboot企业级抽奖项目业务二(用户模块)

书接上回&#xff0c;梅开二度 开发流程 该业务基于rouyi生成好了mapper和service的代码&#xff0c;现在需要在controller层写接口 实际操作流程&#xff1a; 看接口文档一>controller里定义函数一>看给出的工具类一>补全controller里的函数一>运行测试 接口…

rust 文件引用,父目录下的同级目录之间的引用

父目录下的同级目录之间的引用 例如有&#xff1a; src/component/aaa.rs src/component/mod.rs // 有 pub mod aaa; src/module/bbb.rs src/module/mod.rs // 有 pub mod bbb; src/main.rs // 有 mod module;如果 bbb.rs要引用aaa.rs&#xff1a; 在main.rs再加上mod compo…

如何快速用docker run启动一个linux环境(debian/ubuntu)

如何快速用docker run启动一个linux环境&#xff08;debian/ubuntu&#xff09; 文章目录 前言正文拉取镜像启动镜像 总结 前言 如何快速启动一个docker环境用于调式或相关用途&#xff0c;该环节具备某一特定系统所有相关组件及依赖库&#xff0c;并将本地目录挂载到目标路径…

C++基础部分

万能模板 #include<bits/stdc.h> 数组长度 size_t n sizeof(a)/sizeof(a[0]);控制台输入数据的处理 &#xff08;1&#xff09;字符串——getline(cin,s) #include<bits/stdc.h> using namespace std;int main() {string s1,s2;getline(cin,s1);getline(cin,s…

【数据结构】堆和树详解堆和二叉树的实现堆的top-k问题

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;数据结构_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.树概念及结构 1.1 树的概念 2.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用 2.二叉树的概念及结构 2.1 二叉树的概念…