题解 | #矩阵中的路径#

矩阵中的路径

http://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

DFS最优遍历,首先很简单能想到 上下左右 分别对应 (x,y) 的加减, 

所以代码的大致轮廓我们应该能写出来,就是遍历矩形所有的点,然后从这个点开始往他的4个方向走,因为是二维数组,所以有两个for循环,代码如下 hasPath,
关键代码是DFS这个函数,用到了递归,要注意递归要有终止条件,而且要注意[1:]和[1]的区别

class Solution:
    def hasPath(self , matrix , word ):
        # write code here
        visited = [[0 for i in range(len(matrix[0]))] for j in range(len(matrix))]#建立一个用来mark不会重复走同一个格子的matrix,默认置0,走过一次则置为1
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if self.DFS(i, j, matrix, visited, word):#
                    return True
        return False
     
    def DFS(self, x, y, matrix, visited, word):
        if not visited[x][y]:
            if matrix[x][y] == word[0]:
                visited[x][y] = 1#visited默认置0,走过一次则置为1
                if len(word[1:]) == 0:#中止条件,注意此处既判断了word[1]有没有值,也不会报错,如果直接用len(word[1])== 0则不行,因为word里只有一个值时,word[1]可以调用但是word[1:]不可以
                    return True
                if y+1 <= len(matrix[0])-1 and self.DFS(x,y+1, matrix, visited, word[1:]):#如果满足则走下一步y+1
                    return True
                if x+1 <= len(matrix)-1 and self.DFS(x+1, y, matrix, visited, word[1:]):#如果y+1不满足,则走下一步x+1
                    return True
                if x-1 >= 0 and self.DFS(x-1, y, matrix, visited, word[1:]):#如果x+1.y+1都不满足,则走x-1
                    return True
                if y-1 >= 0 and self.DFS(x, y-1, matrix, visited, word[1:]):#如果x+1,y+1,x-1都不满足,则走y-1
                    return True
                visited[x][y] = 0#如果上下左右都不满足,则将已经走过的(x,y)全部置0,为下一次新的
        return False

全部评论

相关推荐

来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务