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

定制类网站seo怎么去优化

定制类网站,seo怎么去优化,wordpress能用手机端,高端品牌网站建设兴田德润在哪儿文章目录 542. 01 矩阵解题思路:多源BFS 正难则反 542. 01 矩阵 542. 01 矩阵 ​ 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 ​ 两个相邻元素间的距离为 1 。…

文章目录

  • 542. 01 矩阵
  • 解题思路:多源`BFS` + 正难则反

在这里插入图片描述

542. 01 矩阵

542. 01 矩阵

​ 给定一个由 01 组成的矩阵 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 <= 104
  • 1 <= m * n <= 104
  • mat[i][j] is either 0 or 1.
  • mat 中至少有一个 0

解题思路:多源BFS + 正难则反

​ 首先这里用暴力解法肯定会超时,所以就不讲解了!

​ 然后这是我们遇到的第一道多源最短路问题,会讲的详细一点!前面简介说过,多源 BFS 来解决多源最短路问题 需要满足边权为一 的条件,很明显这道题是符合的,所以按照下面的两步走:

  1. 将所有的源点加入到队列中
  2. 一层一层的往外拓展

​ 但是有一个问题,如果我们按照题目的要求,以值为 1 的元素作为源点的话,会有一个问题,就是当所有的 1 作为源点去向外拓展找到 0 的时候,对于这个 “超级源点” 来说,只知道它本身距离 0 的长度,而并不知道里面每个 1 元素距离 0 的长度,这就麻烦了,如下图所示:

在这里插入图片描述

​ 既然遇到这个问题,我们就换个思路,正难则反:以值为 0 的元素作为源点向外拓展更新距离!为什么这样子可以呢,因为以 0 作为源点的话,我们是知道 0 元素最后的距离其实就是 0,而向外拓展每一层又可以更新 1 距离当前的距离,一举两得!

​ 所以我们只需要 创建一个二维数组 distance 表示每个元素距离 0 元素的最近距离,然后 0 位置的距离都初始化为 0,而将 其它位置的距离都初始化为 -1 即可,这样子后面我们也 不需要使用 used 数组 来标记走过的元素了,因为可以通过判断是否为 -1 来决定当前位置是否走过!如下图所示:
在这里插入图片描述

​ 之后以 0 为源点向外一层一层的拓展,也就是将 0 位置都入队列,然后进行 bfs 操作,然后下一层的距离就是当前层距离加一了。下图是向外拓展一层的情况:

在这里插入图片描述

​ 然后以此类推直到队列中没有节点为止,如下图所示:(红色表示当前队列中的节点,蓝色表示新一层更新的距离)
在这里插入图片描述

​ 有了大概的思路,其实代码也不难写,和单源路径其实差不多

class Solution {
private:int dx[4] = { 0, 0, -1, 1 };int dy[4] = { -1, 1, 0, 0 };
public:vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {int m = mat.size(), n = mat[0].size();vector<vector<int>> distance(m, vector<int>(n, -1)); // 初始化距离矩阵为-1// 正难则反:将0的位置都入队列,并且将其距离设置为0queue<pair<int, int>> bfs;for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){if(mat[i][j] == 0){distance[i][j] = 0;bfs.push({i, j});}}}while(!bfs.empty()){// 一层一层往外拓展,更新距离int size = bfs.size();while(size--){auto [x, y] = bfs.front();bfs.pop();for(int i = 0; i < 4; ++i){int newx = x + dx[i], newy = y + dy[i];if(newx >= 0 && newy >= 0 && newx < m && newy < n && distance[newx][newy] == -1){bfs.push({newx, newy});distance[newx][newy] = distance[x][y] + 1; // 只需要在当前距离上加一即可}}}}return distance;}
};

在这里插入图片描述


文章转载自:

http://dxkkpws1.msbct.cn
http://yfxIOUjk.msbct.cn
http://O5dGdMZq.msbct.cn
http://YmNCoZJI.msbct.cn
http://5IjsI1al.msbct.cn
http://zpyQlKuy.msbct.cn
http://WSV2jiOh.msbct.cn
http://ZltDqrRv.msbct.cn
http://KBgy6r1Q.msbct.cn
http://T6EjH3Hp.msbct.cn
http://LpXitM9s.msbct.cn
http://gaeD10IR.msbct.cn
http://txyizqvH.msbct.cn
http://DTRL7dZU.msbct.cn
http://xnpzd8Wz.msbct.cn
http://zES3udCQ.msbct.cn
http://zH1mDMPE.msbct.cn
http://FbCUVm6U.msbct.cn
http://oyp3mYIn.msbct.cn
http://J7nl0X7N.msbct.cn
http://pu4iOZaq.msbct.cn
http://f7098L5R.msbct.cn
http://GmnMhVPu.msbct.cn
http://I3IwZHVe.msbct.cn
http://g8AEALkK.msbct.cn
http://5L7dWFI8.msbct.cn
http://mf32zch7.msbct.cn
http://MqzgX1ba.msbct.cn
http://DQYVliLd.msbct.cn
http://hEr7ofyv.msbct.cn
http://www.dtcms.com/wzjs/729319.html

相关文章:

  • 做棋牌网站多少钱做购物比价的网站有哪些
  • 开发工程师网站开发工程师招聘广告设计素材库
  • 怎么给公司注册网站免费的外网连接器
  • 北京欢迎你网站建设制作二维码软件
  • 深圳龙华观澜网站建设公司韶关做网站公司
  • 中英文双语的网站怎么建设360度全景地图
  • 太原网站建设随州电商网站建设题库
  • 网页设计与网站建设教程企业网站排名提升软件能优化
  • 专门做教育咨询有限公司网站搜索引擎优化的对比
  • 北京公司请做网站工资网页游戏传奇合击
  • 网站自然排名往后掉网络科技网站设计
  • 网站建设 微信开发网页设计与网站建设试题
  • 58南浔做网站视频剪辑培训机构哪个好
  • 做百科网站体验营销
  • 企业网站建设方案价位全球速卖通卖家注册
  • 怎么在网站底部添加备案号做小说网站做国外域名还是国内的好
  • 你建立的网站使用了那些营销方法前端网页模板
  • 上网站建设公司鲜花网站建设的目标
  • 国外设计网站app吗怎样让客户做网站
  • 做淘宝客网站挣钱网站规划设计
  • 北京赛车网站开发公司工业设计属于什么专业类别
  • 学习做网站免费网站模版
  • 网站开发合同注意事项1元网站建设精品网站制作
  • 泰州网站制作张店网站建设定制
  • vps看网站蜘蛛唐山市住房城乡建设部网站主页
  • 网站开发所需配置威海高端网站建设
  • 企业网站尺寸网站建设费的摊销
  • 办公家具网站建设公司湛江人才网招聘信息网
  • 专业网站建设哪家便宜网站开发公司联系电话
  • 浉河网站建设传奇电脑版