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
    
    
  • 相关阅读:
    产品评价 商家回复倒三角形
    第二行字体 多余省略号显示
    Input 标签 安卓 与 IOS 出现圆角 显示
    iOS testflight 使用说明
    iOS滤镜功能
    cookie和session以及iOS cookie的查取
    微信小程序开发demo
    Charles(V3.10.1)的抓包以及常见功能的使用
    通知实战 设置通知图片(iOS10以后的)
    Xcode: Run Script 的运用, 使build打包后自动+1
  • 原文地址:https://www.cnblogs.com/absolute/p/5677969.html
Copyright © 2011-2022 走看看