当前位置:网站首页>Leetcode79. 单词搜索
Leetcode79. 单词搜索
2022-08-09 23:32:00 【Java全栈研发大联盟】
题目传送地址: https://leetcode.cn/problems/word-search/submissions/
运行效率:
代码如下:
//回溯法,递归
public static boolean exist(char[][] board, String word) {
HashSet<String> set = new HashSet<>();
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (board[i][j] == word.charAt(0)) {
if (recur(i, j, board, word, 0, set)) {
return true;
}
}
}
}
return false;
}
//注意要在recur函数的开头set.add(row + ":" + col); 且在结尾要 set.remove(row + ":" + col); 这才是回溯的状态的还原
public static boolean recur(int row, int col, char[][] board, String word, int k, HashSet<String> set) {
//处理边界情况
if (k == word.length() - 1) {
if (board[row][col] == word.charAt(k)) {
set.add(row + ":" + col);
return true;
}
return false;
}
if (board[row][col] != word.charAt(k)) {
return false;
}
//当前坐标的元素能不能成为贪吃蛇的蛇头, 取决于左、右、下 三个位置的情况
boolean bottom;
boolean left;
boolean right;
boolean top;
set.add(row + ":" + col);
boolean result = false;
//下边相邻的坐标
if (row + 1 < board.length && !set.contains((row + 1) + ":" + col)) {
bottom = recur(row + 1, col, board, word, k + 1, set);
if (bottom) {
result = true;
}
}
//左边相邻的坐标
if (col - 1 >= 0 && !set.contains(row + ":" + (col - 1))) {
left = recur(row, col - 1, board, word, k + 1, set);
if (left) {
result = true;
}
}
//右边相邻的坐标
if (col + 1 < board[0].length && !set.contains(row + ":" + (col + 1))) {
right = recur(row, col + 1, board, word, k + 1, set);
if (right) {
result = true;
}
}
//上边相邻的坐标
if (row - 1 >= 0 && !set.contains((row - 1) + ":" + col)) {
top = recur(row - 1, col, board, word, k + 1, set);
if (top) {
result = true;
}
}
set.remove(row + ":" + col);
return result;
}
边栏推荐
- 安全知识培训——消防安全
- Jpa 查询view or 无主键的table
- CST Studio Suite 2021 software installation package and installation tutorial
- 下班后用微信处理工作时发病身亡,法院判决:工伤!
- 信息系统项目管理师核心考点(六十四)信息安全基础知识重要概念
- 【集训DAY4】询问【Hash】
- WPF DataGrid 使用数据模板
- Redis-基本介绍/linux下环境配置/配置文件
- 微信小程序获取微信用户步数
- C language learning journey [operator (incomplete version)]
猜你喜欢
随机推荐
redis分布式锁代码示例
ECCV 2022 | Microsoft Open Source TinyViT: Pre-training Capabilities for Small Models
Description of AirFlow
第十五章 mysql存储过程与存储函数课后练习
考柏的感慨
mysql无法远程连接 Can‘t connect to MySQL server on ‘xxx.xxx.xxx.xxx‘ (10060 “Unknown error“)
NotWritableError: The current user does not have write permissions when conda creates a new environment
信息系统项目管理师核心考点(六十四)信息安全基础知识重要概念
【集训DAY4】询问【Hash】
C language learning journey [operator (incomplete version)]
Kubernetes 开发环境比对
LeetCode常见题型——链表
Golden Warehouse Database KingbaseGIS User Manual (6.6. Geometric Object Verification Function, 6.7. Spatial Reference System Function)
Kubernetes服务接入Istio
新开窗口 展示协议
服务发现@EnableDiscoveryClient
Wireshark经典实践和面试13点总结
字节技术面都过了,薪资都谈好了20K*13结果还是被刷了,问HR原因是。。。
Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
【SSL集训DAY2】Sort【树状数组】