leetcode5366. 检查网格中是否存在有效路径
三月 22, 2020
leetcode5366. 检查网格中是否存在有效路径
给你一个 m x n 的网格 grid。网格里的每个单元都代表一条街道。grid[i][j] 的街道可以是:
1 表示连接左单元格和右单元格的街道。
2 表示连接上单元格和下单元格的街道。
3 表示连接左单元格和下单元格的街道。
4 表示连接右单元格和下单元格的街道。
5 表示连接左单元格和上单元格的街道。
6 表示连接右单元格和上单元格的街道。
你最开始从左上角的单元格 (0,0) 开始出发,网格中的「有效路径」是指从左上方的单元格 (0,0) 开始、一直到右下方的 (m-1,n-1) 结束的路径。该路径必须只沿着街道走。
注意:你 不能 变更街道。
如果网格中存在有效的路径,则返回 true,否则返回 false 。
我的思路
dfs查找,分6种情况,当前的是哪一种路,然后下一步要走哪一种路,如果不能走就不去搜索。第一次做这种题,代码还是很不好看的。一堆ifelse可以用switch优化。
1 | class Solution { |
优化方法
评论区看到的检查网格中是否存在有效路径。
1 | class Solution { |
多用了一个数组表示当前的路的状态,再根据dir[t][0] + dir[p][0]==0 && dir[t][1]+dir[p][1]==0判断能不能再继续走。
这周的第三道题最后五分钟才写出来,还好也是三道题,基本目标达成了。
leetcode 63/100
查看评论