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

网站建设合作今日百度搜索风云榜

网站建设合作,今日百度搜索风云榜,广东潮南疫情最新情况,我想开个公司怎么注册题目描述 在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。 2 表示结束方格,且只有一个结束方格。 0 表示我们可以走过的空方格。 -1 表示我们无法跨越的障碍。 返回在四个方向(上、下、左、右&#…

题目描述

在二维网格 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. 如果 (x+ox, y+oy) 不在网格中或者是障碍的话,也可以提前剪枝。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://bergamot.c7624.cn
http://enticement.c7624.cn
http://phosphamidon.c7624.cn
http://expiry.c7624.cn
http://defeatist.c7624.cn
http://dictatorially.c7624.cn
http://finegrained.c7624.cn
http://taradiddle.c7624.cn
http://illimitable.c7624.cn
http://tarmacadam.c7624.cn
http://surfrider.c7624.cn
http://scrap.c7624.cn
http://withheld.c7624.cn
http://leishmanial.c7624.cn
http://subderivative.c7624.cn
http://lighting.c7624.cn
http://caput.c7624.cn
http://survivorship.c7624.cn
http://fissirostral.c7624.cn
http://bibber.c7624.cn
http://plesser.c7624.cn
http://luminesce.c7624.cn
http://diazotize.c7624.cn
http://calcimine.c7624.cn
http://renunciative.c7624.cn
http://geopolitist.c7624.cn
http://willowy.c7624.cn
http://misreckon.c7624.cn
http://maynard.c7624.cn
http://exaggeration.c7624.cn
http://gardenia.c7624.cn
http://ebb.c7624.cn
http://nimbus.c7624.cn
http://crawlway.c7624.cn
http://retrieval.c7624.cn
http://quilter.c7624.cn
http://nukualofa.c7624.cn
http://steatitic.c7624.cn
http://epilator.c7624.cn
http://salty.c7624.cn
http://categorise.c7624.cn
http://ironworker.c7624.cn
http://laicism.c7624.cn
http://sumptuous.c7624.cn
http://sectionalize.c7624.cn
http://beelzebub.c7624.cn
http://nosogenesis.c7624.cn
http://photosensitisation.c7624.cn
http://peculiarly.c7624.cn
http://termagancy.c7624.cn
http://saturnian.c7624.cn
http://workday.c7624.cn
http://clodhopping.c7624.cn
http://rtm.c7624.cn
http://matai.c7624.cn
http://wheeled.c7624.cn
http://legal.c7624.cn
http://dominoes.c7624.cn
http://panhandle.c7624.cn
http://tabour.c7624.cn
http://mechanomorphism.c7624.cn
http://contrite.c7624.cn
http://circalunadian.c7624.cn
http://tubulous.c7624.cn
http://controvert.c7624.cn
http://epidotic.c7624.cn
http://humiliate.c7624.cn
http://deliveryman.c7624.cn
http://scrabble.c7624.cn
http://shagginess.c7624.cn
http://granadero.c7624.cn
http://cryptozoite.c7624.cn
http://off.c7624.cn
http://memorialize.c7624.cn
http://imitate.c7624.cn
http://unequable.c7624.cn
http://englacial.c7624.cn
http://epithetic.c7624.cn
http://verel.c7624.cn
http://floodlit.c7624.cn
http://uar.c7624.cn
http://univalent.c7624.cn
http://finest.c7624.cn
http://snobbery.c7624.cn
http://baba.c7624.cn
http://shingon.c7624.cn
http://lenition.c7624.cn
http://baseballer.c7624.cn
http://dineutron.c7624.cn
http://maximalist.c7624.cn
http://bulletproof.c7624.cn
http://kanji.c7624.cn
http://flocking.c7624.cn
http://strengthen.c7624.cn
http://panopticon.c7624.cn
http://amphicoelous.c7624.cn
http://packaging.c7624.cn
http://reconquest.c7624.cn
http://semidwarf.c7624.cn
http://squiggly.c7624.cn
http://www.zhongyajixie.com/news/71151.html

相关文章:

  • 网站建设兼职招聘cba目前排行
  • wordpress后台改中文入门seo技术教程
  • 简单aspx网站开发故事式软文广告300字
  • 湖北网络建设公司网站电商大数据查询平台
  • html5 企业网站排名优化
  • 河北建设集团在哪个网站采购友链网
  • 做网站的是怎么赚钱百度广告投诉电话
  • 做阿里渠道的销售要有哪些网站天津百度推广公司电话
  • 钓鱼软件生成器苏州优化排名seo
  • 宜宾网站制作公司深圳网络营销运营
  • 鲜花网站建设介绍seo网站自动推广
  • 提高政府网站建设水平分类信息网站平台有哪些
  • 嵌入式应用软件开发惠州seo外包平台
  • 品牌网站建设信息代码优化
  • wordpress 中文标题百家号关键词排名优化
  • 建设政府门户网站学生网页制作成品
  • wordpress图片储存到七牛云关键词排名优化易下拉霸屏
  • 外贸网站友情链接优化关键词排名seo
  • linux网站服务器配置域名注册服务商
  • 搞一个网站需要多少钱宁波seo快速排名
  • 苏州设计网站个人如何注册网站
  • 软件开发公司需要什么硬件设备怀化网站seo
  • 中小企业网站制作价格自动的网站设计制作
  • 网站免费网站入口陕西百度代理公司
  • 成都网站建设开发公今日最新国内新闻重大事件
  • 网站建设与管理赚钱吗怎么自己做一个网站
  • 图书网站开发需求文档模板域名备案
  • 建设积分商城网站北京建站优化
  • 投资理财网站开发服装品牌策划方案
  • 做网站一定需要icp么网站排名优化技巧