Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • 哈希表

  • 双指针

  • 数组

  • 字符串

  • 链表

  • 树

  • 回溯

    • 组合类型
    • 子集类型
    • 排列类型
    • 树回溯
    • 经典题
    • 遍历dfs
      • 79. 单词搜索
  • 动态规划

  • 图

  • 二分查找

  • 贪心

  • 栈&队列

  • 堆

  • 位运算

  • 数据结构设计

  • rui的精选题单

  • 笔试真题

  • LeetCode周赛

  • ACM模式输入输出
  • 数学

  • 数据结构与算法
  • 回溯
Nreal
2024-01-27
目录

遍历dfs

# 79. 单词搜索 (opens new window)

class Solution {
    char[][] board;
    String word;
    int n;
    int[][] dirs = {{1,0},{-1,0},{0,-1},{0,1}};
    public boolean exist(char[][] board, String word) {
        this.board = board;
        this.word = word;
        this.n = word.length();
        for(int i=0;i<board.length;i++){
            for(int j=0;j<board[0].length;j++){
                if(dfs(0,i,j)){
                    return true;
                }
            }
        }
        return false;
    }
    boolean dfs(int idx,int x,int y){
        if(word.charAt(idx)!=board[x][y])
            return false;
        if(idx==n-1)
            return true;
        char ch = board[x][y];
        board[x][y] = '.';
        for(int[] dir:dirs){
            int dx = x+dir[0];
            int dy = y+dir[1];
            if(dx<0||dx>=board.length||dy<0||dy>=board[0].length
            || board[dx][dy]=='.'){
                continue ;
            }
            if(dfs(idx+1,dx,dy))
                return true;
        }
        board[x][y] = ch;
        return false;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
经典题
典型问题—斐波那契类型

← 经典题 典型问题—斐波那契类型→

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式