Middle-题目108:79. Word Search
来源:互联网 发布:泛型 java 方法 编辑:程序博客网 时间:2024/05/15 23:49
题目原文:
Given a 2D board and a word, find if the word exists in the grid.
The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.
For example,
Given board =
[
[‘A’,’B’,’C’,’E’],
[‘S’,’F’,’C’,’S’],
[‘A’,’D’,’E’,’E’]
]
word = “ABCCED”, -> returns true,
word = “SEE”, -> returns true,
word = “ABCB”, -> returns false.
题目大意:
给出一个矩阵,和一个单词,判断单词是否能由矩阵中一条路径连接出来。
题目分析:
一个简单的dfs,教科书式的dfs写法即可,搜到字母错误或者搜到数组边缘则退出,否则每次向四个方向搜索,注意这里的dfs是有返回值的,返回该条件下是否有解。
源码:(language:java)
public class Solution { public boolean exist(char[][] board, String word) { int row = board.length; if(row==0) return false; int col = board[0].length; boolean[][] visited = new boolean[row][col]; for(int i = 0;i<row;i++) { for(int j=0;j<col;j++) { if(word.charAt(0) == board[i][j]) { if(dfs(board, i, j, visited, word, 0)) return true; } } } return false; } private boolean dfs(char[][] board, int i, int j, boolean[][] visited, String word, int index) { if(index == word.length()) return true; else if(i<0 || i>board.length-1 || j<0 || j>board[0].length-1 || word.charAt(index)!=board[i][j] || visited[i][j]) return false; else { visited[i][j]=true; boolean result = dfs(board, i-1, j, visited, word, index+1) || dfs(board, i+1, j, visited, word, index+1) || dfs(board, i, j-1, visited, word, index+1) || dfs(board, i, j+1, visited, word, index+1); visited[i][j] = false; return result; } }}
成绩:
13ms,beats 58.16%,众数14ms,14.58%
cmershen的碎碎念:
本题基本上是一个教科书式的dfs,区别是dfs带有返回值判断是否有解。
0 0
- Middle-题目108:79. Word Search
- Middle-题目13:35. Search Insert Position
- Middle-题目92:139. Word Break
- Middle-题目119:127. Word Ladder
- Middle-题目12:96. Unique Binary Search Trees
- Middle-题目32:240. Search a 2D Matrix II
- Middle-题目36:74. Search a 2D Matrix
- Middle-题目48:81. Search in Rotated Sorted Array II
- Middle-题目64:95. Unique Binary Search Trees II
- Middle-题目65:34. Search for a Range
- Middle-题目117:98. Validate Binary Search Tree
- LeetCode上面一道算法题目:79. Word Search
- Middle-题目9:318. Maximum Product of Word Lengths
- Hard-题目48:212. Word Search II
- LeetCode 79. Word Search
- [LeetCode]79.Word Search
- LeetCode --- 79. Word Search
- [Leetcode] 79. Word Search
- CV codes分类整理集合
- Middle-题目107:61. Rotate List
- Javascript将Form数据转化成Json对象
- 表单中 get与post提交方法的区别
- 线性表链式存储结构的C++模板类程序源代码
- Middle-题目108:79. Word Search
- mina心跳过滤器
- 第十三周项目—阅读程序,并运行结果(虚析构函数)
- Oracle数据使用中出现的几种问题及解决方法
- oracle笔记
- Unity3D之Vector3.Dot(点积)和Vector3.Cross(叉积)的使用
- vim替换命令
- Middle-题目109:143. Reorder List
- vim配置之taglist插件安装