Word Search - LeetCode

本文详细介绍了如何使用深度优先搜索(DFS)算法解决LeetCode上的WordSearch问题。通过从给定矩阵中查找特定单词,文章展示了如何设计并实现DFS函数,包括减少函数参数以提高效率的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

Word Search - LeetCode

注意点

  • 尽量减少函数参数的个数,而且最好使用引用,否则速度会慢很多

解法

解法一:典型的dfs。从开头的字母开始,往四周寻找下一个字母,如果没有匹配的就返回false。根据短路特性找到一个匹配的之后就会继续访问下去。

class Solution {
public:
    bool dfs(vector<vector<char>>& board,string& word,int index,int x,int y)
    {
        
        if(index == word.size()) return true;
        if(x < 0 || y < 0 || x >= board.size() || y >= board[0].size() || board[x][y] != word[index] ) return false;
        bool res = false;
        char temp = board[x][y];
        board[x][y] = '*';
        res = dfs(board,word,index+1,x,y+1) ||
              dfs(board,word,index+1,x,y-1) ||
              dfs(board,word,index+1,x+1,y) ||
              dfs(board,word,index+1,x-1,y);
        board[x][y] = temp;
        return res;
    }
    bool exist(vector<vector<char>>& board, string word) {
        if(word.size() == 0) return true;
        if(board.size() == 0) return false;
        int i,j,m = board.size(),n = board[0].size();
        for(i = 0;i < m;i++)
        {
            for(j = 0;j < n;j++)
                if(board[i][j] == word[0]) if(dfs(board,word,0,i,j)) return true;
        }
        return false;
    }
};

874b0eb1gy1g0vnck7p80j21690kqwfv.jpg

小结

  • dfs。

转载于:https://www.cnblogs.com/multhree/p/10497982.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值