题目描述

给定表示地图上坐标的2D数组,地图上只有值0,1,2.0表示可以通过,1表示不可通过,2表示目标位置。从坐标[0,0]开始,你只能上,下,左,右移动。找到可以到达目的地的最短路径,并返回路径的长度。

(地图一定存在且不为空,并且只存在一个目的地)

样例1:

输入:
[[0, 0, 0],[0, 0, 1],[0, 0, 2]
]
输出: 4
说明: [0,0] -> [1,0] -> [2,0] -> [2,1] -> [2,2]

样例2:

输入:
[[0,1],[0,1],[0,0],[0,2]
]
输出: 4
说明: [0,0] -> [1,0] -> [2,0] -> [3,0] -> [3,1]

题目解析

1.此题类似骑士遍历题,但骑士遍历题的检查target是检查坐标,这题是检查value。所以如果在struct Point里面加上value这一项要确保target=2的值没有被改掉。

2.此题不需要visited map,因为可以简单的将targetMap[i][j]设为1,这样下次就不用再访问了。

http://3.In the validPlace(), 要确保先检查p.x和p.y的范围,然后再检查grid[p.x][p.y]的值,不然就segment fault。

参考代码

/**
* 本参考程序来自九章算法,由 @九章算法助教团队 提供。版权所有,转发请注明出处。
* - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
* - 现有的面试培训课程包括:九章算法班,系统设计班,算法强化班,Java入门与基础算法班,Android 项目实战班,
* - Big Data 项目实战班,算法面试高频题班, 动态规划专题班
* - 更多详情请见官方网站:http://www.jiuzhang.com/?source=code
*/ public class Solution {/*** @param targetMap: * @return: nothing*/public int shortestPath(int[][] targetMap){// Write your code hereint lenPath = 0;int targetX = 0;int targetY = 0;for (int i = 0; i < targetMap.length; i++) {for (int j = 0; j < targetMap[0].length; j++) {if (targetMap[i][j] == 2) {targetX = i;targetY = j;}}}lenPath = bfs(targetMap, targetX, targetY);return lenPath;}   int[] dx = { 0, 1, 0, -1 };int[] dy = { 1, 0, -1, 0 };public int bfs(int[][] targetMap, int targetX, int targetY) {int height = targetMap.length;int width = targetMap[0].length;Queue<Point> q = new LinkedList<Point>();q.offer(new Point(0, 0));int[][] deep = new int[height][width];for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {deep[i][j] = -1;}}deep[0][0] = 0;while (q.size() > 0) {Point p = q.poll();if (p.x == targetX && p.y == targetY) {break;}for (int i = 0; i < 4; i++) {int x = p.x + dx[i];int y = p.y + dy[i];if (x >= 0 && x < height && y >= 0 && y < width && targetMap[x][y] != 1 && deep[x][y] == -1) {deep[x][y] = deep[p.x][p.y] + 1;q.offer(new Point(x, y));}}}return deep[targetX][targetY];}
}

点击 LintCode 进行在线评测

LintCode 题解 |亚马逊、微软热门题:目的地的最短路径相关推荐

  1. 云计算市场竞争激烈 亚马逊微软IBM阿里业绩亮眼

    毫无疑问,云计算正在成为各大科技巨头角逐的新战场.这两天,在云计算方面有着重要布局的几家科技公司纷纷公布了各自在2015年最后一个季度的财报.从中,我们可以一窥其在该领域的进展. 亚马逊 先来看亚马逊 ...

  2. 云计算产值将超3000亿美元 亚马逊微软谷歌居三甲

    腾讯科技讯 3月27日消息,据外电报道,云计算曾经主要是无法承担建造和维护基础设施的初创公司的解决方案,但对于管理数字业务的大型企业而言,云计算正快速成为省钱的管理数字业务的方式.市场调研公司IDC在 ...

  3. 特斯拉强制返岗遭亚马逊微软挖人:“不喜欢马斯克的速来,我们可居家办公”

    上周,马斯克强制员工返岗的新闻引起了热烈讨论.马斯克没想到的是,自己或许亲手打开了特斯拉人才流失的大门. 据外媒报道,强制员工返岗的政策激怒了很多特斯拉的员工,趁此机会,亚马逊.微软等几家大型科技公司 ...

  4. 云服务器 谷歌 微软 亚马逊,谷歌,亚马逊,微软云计算的发展史

    WindowsAzure是微软基于云计算的操作系统.WindowsAzure的主要目标是为开发者提供一个平台,帮助开发可运行在云服务器.数据中心.Web和PC上的应用程序.云计算的开发者能使用微软全球 ...

  5. 亚马逊经典真题:三数之和

    描述: 给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组. 在线测评地址 样例 1: 输入: numbers = [2,7,11,15] 输 ...

  6. 殊途同归? 亚马逊和微软都选了云业务老大当公司CEO

    2月6日消息,近日,亚马逊宣布了CEO杰夫·贝索斯(Jeff Bezos)将于2021年第3季度卸任公司CEO并过渡到董事会执行主席一职,亚马逊云计算部门AWS负责人.服务公司24年的老将安迪·杰西( ...

  7. 亚马逊10000人大裁员已启动!谷歌绩效强制打低分跟风「毕业潮」

      新智元报道   编辑:好困 Aeneas [新智元导读]硅谷裁员接力的下一棒,今天落到了亚马逊手里. 最近,硅谷大厂们轮番上演「毕业」大戏. 推特.Meta.Salesforce.Stripe等大 ...

  8. 亚马逊10000人大裁员今启动!谷歌绩效强制打低分跟风「毕业潮」

      视学算法报道   编辑:好困 Aeneas [导读]硅谷裁员接力的下一棒,今天落到了亚马逊手里. 最近,硅谷大厂们轮番上演「毕业」大戏. 推特.Meta.Salesforce.Stripe等大厂, ...

  9. 支付宝员工求问谷歌亚马逊员工:如能六点下班,学好英语就去投奔

    在互联网吐槽社区,一名标签为阿里旗下的支付宝员工如此评论:脸书谷歌亚马逊微软的大兄弟们,请问你们6点能下班吗,如果可以的话请等我两年学好英语就去投奔你们,蚂蚁天天11点,我快疯了云云. 很快,就有这些 ...

最新文章

  1. Python3 调试技巧 —— 死循环
  2. MongoDB是什么以及它如何满足您的应用需求
  3. jQuery reset
  4. oracle利用触发器实现自增列
  5. 0基础必看:如何轻松成为C语言高手
  6. java mbean获取堆信息_实时取得虚拟机类信息、内存信息、MXBean的使用方法
  7. 海龟交易法则14_掌控心魔
  8. MyEclipse卡死解决方法
  9. C#关于委托(基础)
  10. 相机标定—了解相机模型
  11. python中注释的定义_Python注释及变量
  12. Latex:WinEdt打开.tex文件时的编码问题
  13. JAVA实现UDP通信
  14. 什么是WBS分解法?
  15. 登录的时候 实现记住密码
  16. 生存预测模型样本量计算(完善中)
  17. 免费的视频格式转换器哪个最好用呢?
  18. 新建工程,如何通过git上传到阿里云code
  19. 畅游高管曝出“k事件” 搜狐的老本往后怎么“吃”?
  20. 奇怪的是珊瑚虫版反而可以

热门文章

  1. android 删除号码恢复,手机联系人误删了怎么恢复
  2. 随机过程 更新过程(下)
  3. IOU, GIOU, DIOU, CIOU
  4. Java并发压力测试数据库_百万并发压力测试-如何用Java编写纯并发压力测试
  5. 树莓派利用3.5mm接口接扬声器播放语音提示
  6. 群控系统服务器配置,群控服务器配置
  7. 通过文件头识别BMP或JPG文件
  8. Oracle错误代码大全
  9. 2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(10)
  10. GPIO子系统需要掌握的重要概念