zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 21-2

    要点:题目不难,但是dfs有很多要素,可以有很多方式组织实现,关键是如何固定实现从而使code的错误最小。

    • visited要在dfs函数开头set,而在函数结尾reset。同理,当前字符的匹配也在开始
    • 这样看出规律,都是在函数内检查pass-in参数的状况,这样是最精简的code
    • 一般True的结束条件是超过边界,但是这题的特殊在于,如果超过border是不进一步dfs的,所以没机会返回True。因此,要在最后一个字符匹配后返回True。同样如果所有dfs都fail掉最终返回False

    错误点:

    • word的index和board的index是分开的,起始点word总是0,而board是i,j循环变量
    • 如果用1d index,算法会很慢
    class Solution(object):
        def exist(self, board, word):
            """
            :type board: List[List[str]]
            :type word: str
            :rtype: bool
            """
            def helper(board, i, j, start, word):
                
    
                if word[start]!=board[i][j]:
                    return False
    
                if start==len(word)-1:
                    return True
                #print i,j
                
                c = board[i][j]
                board[i][j]='.'
    
                m = len(board)
                n = len(board[0])
    
                if i+1<m and helper(board, i+1, j, start+1, word):
                    return True
                
                if i-1>=0 and helper(board, i-1, j, start+1, word):
                    return True
                    
                if j+1<n and helper(board, i, j+1, start+1, word):
                    return True
                    
                if j-1>=0 and helper(board, i, j-1, start+1, word):
                    return True
                
                board[i][j]=c
                return False
                    
            m = len(board)
            n = len(board[0])
            for i in range(m):
                for j in range(n):
                    if board[i][j]==word[0]:
                        if helper(board, i, j, 0, word):
                            return True
            
            return False
    
    
  • 相关阅读:
    高可用网站多点部署架构实战经验总结
    使用阿里云发送邮件完美解决 端口 25 465
    阿里云 SSL 证书 总结
    支付宝支付接入流程
    阿里云服务器ECS的环境部署和安装
    对接 第三方物流APP 手机版
    智付支付接入心得
    二次开发本地配置域名
    从1到n整数中1出现的次数:O(logn)算法
    MongoDB——增删改查
  • 原文地址:https://www.cnblogs.com/absolute/p/5677969.html
Copyright © 2011-2022 走看看