剑指offer--面试题66:矩阵中的路径
来源:互联网 发布:网络教育本科证书 编辑:程序博客网 时间:2024/06/06 20:18
题目描述
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。
python实现:
# -*- coding:utf-8 -*-class Solution: def hasPath(self, matrix, rows, cols, path): # write code here #注意matrix是一个list if rows<=0 or cols<=0 or len(path)==0: return False result = False visited = [ [False]*cols for _ in range(rows) ] grid = [ [0]*cols for _ in range(rows) ] k = 0 #把一维的matrix转化成2维的矩阵,方便运算 for i in range(rows): for j in range(cols): grid[i][j] = matrix[k] k += 1 def isValid(i, j, k): if not (0<=i<rows and 0<=j<cols): return False if grid[i][j] != path[k]: return False return visited[i][j]!=True def dfs(i, j, k): if k==len(path): return True if isValid(i, j, k): visited[i][j] = True res = dfs(i-1, j, k+1) or \ dfs(i, j+1, k+1) or \ dfs(i+1, j, k+1) or \ dfs(i, j-1, k+1) visited[i][j] = False return res else: return False for i in range(rows): for j in range(cols): if grid[i][j]==path[0]: result = dfs(i, j, 0) if result: return True return False
0 0
- 《剑指Offer》学习笔记--面试题66:矩阵中的路径
- 【剑指Offer学习】【面试题66:矩阵中的路径】
- 《剑指offer》面试题66 矩阵中的路径
- 剑指offer--面试题66:矩阵中的路径
- 剑指Offer面试题66:矩阵中的路径 java实现
- 剑指offer-面试题66-矩阵中的路径
- 【剑指Offer】面试题66:矩阵中的路径
- 剑指offer--面试题12:矩阵中的路径
- 【剑指offer】面试题12:矩阵中的路径
- 剑指offer面试题12:矩阵中的路径Java实现版
- 面试题66:矩阵中的路径
- 面试题66:矩阵中的路径
- 面试题66:矩阵中的路径
- 剑指offer 66-矩阵中的路径
- 《剑指offer》:[66]矩阵中的路径
- 剑指offer 66题 矩阵中的路径
- 剑指offer--矩阵中的路径
- 《剑指offer》矩阵中的路径
- struts2的核心和工作原理
- oracle编写 函数和存储过程
- DOS命令查看端口使用情况
- 5-1 图 基本概念
- 生命的进程
- 剑指offer--面试题66:矩阵中的路径
- c语言实现互斥
- Java基础-多线程-③线程同步之synchronized
- Android 手机视频选择器---快速开发系列
- shogun-toolbox的安装与问题总结
- 分销系统获得一个用户的所有下级
- springmvc前台给后台传值的几种方式
- gradle简单配置
- 解决Ubuntu安装ftp服务出现的 Unable to locate package vsftpd问题(绝对有用!!!)