当前位置: 首页 > news >正文

专业建站服务建站网温州软件开发

专业建站服务建站网,温州软件开发,网站开发定位,十大购物网站排名本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。

两个相邻元素间的距离为 1 。

示例 1:

输入:mat = [[0,0,0],[0,1,0],[0,0,0]]
输出:[[0,0,0],[0,1,0],[0,0,0]]

示例 2:

输入:mat = [[0,0,0],[0,1,0],[1,1,1]]
输出:[[0,0,0],[0,1,0],[1,2,1]]

提示:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 10^4
  • 1 <= m * n <= 10^4
  • mat[i][j] is either 0 or 1.
  • mat 中至少有一个 0

本题和「1162.地图分析」 一样!那道题理解为需要找到每个  0 0 0 最近的  1 1 1 ,而今天这道题是找每个  1 1 1 最近的  0 0 0

解法 多源BFS

首先把每个源点 0 0 0 入队,然后从各个 0 0 0 同时开始一圈一圈的向 1 1 1 扩散(每个 1 1 1 都是被离它最近的 0 0 0 扩散到的),扩散时可以设置 int[][] dist 来记录距离(即扩散的层次)并同时标志是否访问过。对于本题,可以直接修改原数组 int[][] matrix记录距离标志是否访问,这里要注意先把 m a t mat mat 数组中 1 1 1 的位置设置成 − 1 -1 1 (设成 Integer.MAX_VALUE m × n , m + n m \times n,\ m + n m×n, m+n 都行,只要是个无效的距离值来标志这个位置的 1 1 1 没有被访问过就行)

class Solution {
public:vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {int m = mat.size(), n = mat[0].size();int MAX_VALUE = m + n;queue<pair<int, int>> q;for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (mat[i][j] == 0) q.push({i, j});else mat[i][j] = MAX_VALUE;}}int d[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};while (!q.empty()) {auto [x, y] = q.front(); q.pop();for (int i = 0; i < 4; ++i) {int u = x + d[i][0], v = y + d[i][1];if (u >= 0 && u < m && v >= 0 && v < n && mat[x][y] + 1 < mat[u][v]) {mat[u][v] = mat[x][y] + 1;q.push({u, v});}}}return mat;}
};

复杂度分析:

  • 时间复杂度: O ( m n ) O(mn) O(mn)
  • 空间复杂度:虽然我们是直接修改原输入数组来存储结果,但最差的情况下即全都是 0 0 0 时,需要把 m ∗ n m * n mn 0 0 0 都入队,因此空间复杂度是 O ( m n ) O(mn) O(mn)
http://www.yayakq.cn/news/610677/

相关文章:

  • 男女做爰网站网店管家官网
  • 手机网站左右滑动效果wordpress为什么性能差
  • 找别人做的淘客网站 会不会有问题手机软件怎么做
  • 怎么用群晖nas做网站免费的推广引流软件
  • 网站建设的功能都需要有哪些wordpress文档主题
  • 做那个的网站微信里面如何做网站
  • 清溪镇做网站WordPress插件降级
  • 门户网站开发公司排名wordpress关闭注册
  • 摄影照片投稿网站六安网事
  • 做导航网站犯法吗价格查询网
  • 重庆如何软件网站推广wordpress qq邮件订阅
  • 长沙市城市建设档案馆网站汕头论坛贴吧
  • 个人网站价格网站设计建设介绍
  • 山东省工程建设造价信息网站幻想次元wordpress
  • 网站 横幅企业信用查询官网
  • 大作设计网站官网登录淄博网站制作培训
  • 怎么建设自己淘宝网站首页没有网站怎么做CPC
  • 前台和后台网站开发的区别男子做网站
  • 工商银行建设银行招商银行网站app制作平台排行
  • 企业门户网站的建设与实现论文建设自己的网站
  • 网站建设产品展示二级域名出租
  • 设计参考图网站免费公司建站
  • 郑州网站建设up188容易收录的网站
  • 音乐网站可做哪些内容做美食网站的素材
  • 西安最好的网站建设公司o2o平台模式
  • 婺源网站建制作辽宁省建设工程交易网
  • 网站数据库是什么互联网外包平台
  • 建站公司佛山网站直播是未开票收入怎么做
  • 静态网站开发的目的做网站py和php
  • wordpress外贸站国内最新新闻十篇