题解 | #单词搜索#

单词搜索

http://www.nowcoder.com/practice/14bcbcb7ae3c40c9bdbc5a0861361c29

  1. 专门适用于true false 的模板。记得把base case 2放前,否则会超时
class Solution {
public:

    bool DFS(vector<vector<char> > &board,string word, int cur, int r, int c,vector<vector<bool> >& visits){

        //base case 2
        if(cur == word.size()){
            return true;
        }

        //bool 类型的方向数组 base 1
        if(c<0||c>=board[0].size()|| r<0|| r>=board.size()||visits[r][c]||board[r][c]!=word[cur]){
            return false;
        }





        bool res;

        visits[r][c] = true;
        res = DFS(board,word,cur+1,r+1,c,visits)||
              DFS(board,word,cur+1,r-1,c,visits)||
              DFS(board,word,cur+1,r,c+1,visits)||
              DFS(board,word,cur+1,r,c-1,visits);

        visits[r][c] = false;

        return res;

    }

    bool exist(vector<vector<char> > &board, string word) {
        if (!board.size()) return false;

        vector<vector<bool> > visits(board.size(),vector<bool>(board[0].size(),false));
        for(int i =0 ; i< board.size();i++){
            for(int j =0; j< board[0].size();j++){
                if(board[i][j]==word[0]){
                    if(DFS(board,word,0,i,j,visits)){
                        return true;
                    }
                }
            }
        }
        return false;


    }
};
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

07-01 19:00
门头沟学院 Java
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务