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

提供网站建设公网页的维护与更新

提供网站建设公,网页的维护与更新,网站图怎么做会高清图片,网址大全黄免费片题目描述 在二维网格 grid 上#xff0c;有 4 种类型的方格#xff1a;1 表示起始方格。且只有一个起始方格。 2 表示结束方格#xff0c;且只有一个结束方格。 0 表示我们可以走过的空方格。 -1 表示我们无法跨越的障碍。 返回在四个方向#xff08;上、下、左、右#…题目描述 在二维网格 grid 上有 4 种类型的方格1 表示起始方格。且只有一个起始方格。 2 表示结束方格且只有一个结束方格。 0 表示我们可以走过的空方格。 -1 表示我们无法跨越的障碍。 返回在四个方向上、下、左、右上行走时从起始方格到结束方格的不同路径的数目。每一个无障碍方格都要通过一次但是一条路径中不能重复通过同一个方格。示例 1输入[[1,0,0,0],[0,0,0,0],[0,0,2,-1]] 输出2 解释我们有以下两条路径 1. (0,0),(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(1,0),(2,0),(2,1),(2,2) 2. (0,0),(1,0),(2,0),(2,1),(1,1),(0,1),(0,2),(0,3),(1,3),(1,2),(2,2) 示例 2输入[[1,0,0,0],[0,0,0,0],[0,0,0,2]] 输出4 解释我们有以下四条路径 1. (0,0),(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(1,0),(2,0),(2,1),(2,2),(2,3) 2. (0,0),(0,1),(1,1),(1,0),(2,0),(2,1),(2,2),(1,2),(0,2),(0,3),(1,3),(2,3) 3. (0,0),(1,0),(2,0),(2,1),(2,2),(1,2),(1,1),(0,1),(0,2),(0,3),(1,3),(2,3) 4. (0,0),(1,0),(2,0),(2,1),(1,1),(0,1),(0,2),(0,3),(1,3),(1,2),(2,2),(2,3) 示例 3输入[[0,1],[2,0]] 输出0 解释 没有一条路能完全穿过每一个空的方格一次。 请注意起始和结束方格可以位于网格中的任意位置。提示1 grid.length * grid[0].length 20 来源力扣LeetCode 链接https://leetcode-cn.com/problems/unique-paths-iii 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。思路 从起始格子开始尝试每一个 0 空格。当走到 2 时如果此时网格没有还没走过的空格说明这是一条可行的路径。也就是说我们需要用一个方式来标志已经走过的空格可以把格子设为 -1回溯时需要把格子重新设置为 0不影响其他路径的尝试。 当我们走到 2 时如何判断网格中是否还有未走过的空格 每次都去遍历整个网格的话时间复杂度太高。我们可以在开始先统计网格中一共有多少个可以走的格子每走过一个格子计数器就减一。 复杂度 时间复杂度$O(4^{mn})$, m, n 分别是网格的长宽。找到起始格子和统计空格用了 $O(mn)$递归的时间复杂度 $O(4^{mn})$网格一共有 $mn$ 个格子每个格子有 4 个方向可以走。空间复杂度递归栈的最大空间 O(m∗n)。 p.s. 下方代码是我看错题了求了所有路径。实际上只需要一个计数器来记录路径数不消耗额外空间。 代码 JavaScript Code /*** param {number[][]} grid* return {number}*/ var uniquePathsIII function (grid) {const offsets [[-1, 0],[1, 0],[0, -1],[0, 1],];const ans [];const dfs (grid, x, y, spaceCnt, path) {if (x 0 || x grid.length || y 0 || y grid[0].length) return;if (grid[x][y] 2) {spaceCnt 0 ans.push([...path]);return;}if (grid[x][y] -1) return;grid[x][y] -1; // mark// recursionfor (const [ox, oy] of offsets) {// p.s. 如果 (xox, yoy) 不在网格中或者是障碍的话也可以提前剪枝。dfs(grid, x ox, y oy, spaceCnt - 1, [...path, [x, y]]);}grid[x][y] 0; // backtrack};let startPos {};const init grid {let spaceCnt 1; // 起始方格也是要走的一个格子for (let x 0; x grid.length; x) {for (let y 0; y grid[x].length; y) {if (grid[x][y] 1) startPos { x, y };if (grid[x][y] 0) spaceCnt;}}return spaceCnt;};// 统计要走的格子总数const spaceCnt init(grid);dfs(grid, startPos.x, startPos.y, spaceCnt, []);return ans.length; };
http://www.hkea.cn/news/14369725/

相关文章:

  • 网站后台别人制作网站模板框架
  • 网站开发长期合作网站开发基本语言
  • 怎么搞自己的网站郑州男科哪家比较正规医院
  • 厦门市建设局查询保障摇号网站首页上海网站开发建设电话
  • 购物商城网站的运营下载应用市场软件
  • 网站页面统计代码是什么意思广州seo诊断
  • 济南想建设网站国内好的网站建设
  • 电子商务网站推广实训报告博物馆网站建设方案报价
  • 网站建设需要配置环境么wordpress 虚拟机
  • 网站模板源代码下载大连科技学院官方网站的建设与放
  • 深圳购物网站建设wordpress虚拟3d网站
  • 网站策划做啥网站设计制作费
  • 安居客网站怎么做贸易公司简介模板
  • 青岛制作企业网站进出口外贸公司名字
  • 图书馆网站建设申请自己做的产品在哪个网站上可从卖
  • c 做网站方便吗ftp删除wordpress插件
  • 武威住房和城乡建设厅网站wordpress安装到子目录
  • 网站虚拟交易技术怎么做大型网站建设托管服务
  • 北海公司做网站绍兴网站制作价格
  • 消防网站建设的风格北京手机网站制作
  • 徐州网站制作怎样自己做个网站需要些什么
  • 深圳网站品牌建设太原网站优化推广
  • app和网站开发语言的区别制作动作游戏吧中文
  • 云存储做网站千图网免费海报素材图库
  • 五莲网站设计推广业务
  • 做网站需要接口么福州做网站开发需要多少钱
  • 个人介绍微电影网站模板免费下载阿里云服务器在哪里放着
  • c 网站开发调试网站焦点图设计
  • 建网站的基本流程功能性的网站设计制作
  • 呼和浩特可以做网站的公司网站描述怎么修改吗