题目 思路 备注
    岛屿数量 BFS遍历,遇到1,则res++,并将该单元格(含)相邻的位置全布置为0
    括号生成 DFS递归,记录剩余没用掉的左括号和右括号(核心: 任何位置上左括号数量都要大于或等于右括号数量)
    1. 只要还有左括号剩余,就可以向当前结果串中增加左扣号
    1. 仅当剩余右括号数量严格比剩余左括号多时,才可向结果中增加右括号
    开始dfs: dfs(“”,n,n, res)
    有左括号剩余:if(left>0) dfs(curStr+”(“, left-1, right, res)
    剩余右括号较多时:if(right > left && right > 0) dfs(curStr+”)”, left, right-1, res)
    单词搜索 在矩阵中搜索单词,从任意位置进行左右上下的dfs即可。注意为了不重复搜到同一单元格,要把当前单元格置为非法字符,左右上下dfs后再恢复成原字符 image.png
    单词搜索II 同上,使用dfs+回溯法,但此题要求返回所有存在于矩阵中的单词:> 1.先根据单词表建立一个单词查找树

    2.从每一个位置进行上下左右的dfs,并依据单词查找树进行判定 3.在dfs的过程中,为了让单元格不被重复使用,在dfs过程中,先置为非法值,dfs之后再恢复

    | image.png | | 单词接龙 | BFS遍历,一个队列+一个visited集合,每到一层,依据当前单词找一个可接龙且未用过的新单词来构建下一层,只到某一层中某个词是endWord。最后返回层数即可 | image.png | | 被围绕的区域
    | 处于四周边缘的一定不会被围绕,因此,从四周向内执行DFS搜索,对遇到的’O’标记成T。 最后将O(被包围的)转换成X,将T(从边缘找到的)再恢复成O
    image.png | image.png | | 矩阵中最长递增路径
    image.png | DFS遍历,计算从每个位置起走过的递增路径长度
    要注意,声明一个长度为mn的数组(cache)做为缓存,用以记录从grid[i][j]为起点的最大递增长度为: cache[in+j]。 此外需要记录一个preVal值,只有当grid[i][j]>preVal时,才能继续dfs,进而保证路径的递增性 | image.png | | | | | | | | | | | | | | | | | | | | | | | | | | | | |