79. 单词搜索

class Solution {
    int n;
    int m;
    int dx[] = new int[] { -1, 0, 1, 0 };
    int dy[] = new int[] { 0, -1, 0, 1 };
    public boolean exist(char[][] board, String word) {
        if(board.length==0||board[0].length==0)return false;
        n = board.length;
        m = board[0].length;
        for (int i = 0; i < n; i++) {
            for (int x = 0; x < m; x++) {
                if (dfs(word, board,i, x,0))
                    return true;
            }
        }
        return false;
    }
    private boolean dfs(String word, char[][] board, int i, int x,int u) {
        if(board[i][x]!=word.charAt(u))return false;                                            //省去一个变量来保存状态
        if(u == word.length()-1) return true;

        board[i][x] = '.';                                                                                //替换 这个是一个重要思想       省去一个往回走的判断数组
        for(int z = 0 ; z < 4 ; z++) {
            if (i+dx[z] >= 0 && x+dy[z] >= 0&& i+dx[z] < n && x+dy[z] < m) 
                if(dfs(word , board , i+dx[z],x+dy[z],u+1))
                    return true;
        }
        board[i][x] = word.charAt(u);                                                //还原 真的赞

        return false;
    }
}
全部评论

相关推荐

合适才能收到offe...:项目岗是什么岗?我看你有段好像跟策划运营相关,如果找运营的话第三段经历写详细点儿。 个人建议是把自我评价删了换成专业技能放在工作经验上或者下面。学生会那个也可以删,把第一个包装成店铺运营,写4-6给点。第三个也是写4-6个点。注意工作内容➕部分数据。 投递的时候BOS招呼用语改一下,换成我有xx工作经验,熟练掌握xx技能样式,也可以简历截图然后直接发送。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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