Leetcode_c++: Word Search (079)
来源:互联网 发布:反派的目的知乎 编辑:程序博客网 时间:2024/05/16 17:56
题目
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
O(n^2m^2)
题意很简单,给你一个二维字母的数组,可以上下左右走,查找是否某个单词是否存在。同一位置的字母不可以被使用多次。
解题思路: 类似于迷宫,递归回溯。需要一个辅助数组记录走过的位置,防止同一个位置被使用多次。
http://www.cnblogs.com/ganganloveu/p/4188131.html
class Solution {private: bool dfs(vector<vector<char> > &board,int x,int y,string word,int idx, vector<vector<bool> > &vis){ if(idx==word.length()) return true; if(x<0 ||x>=board.size()||y<0||y>=board[0].size()||vis[x][y]|| board[x][y]!=word[idx]) return false; vis[x][y]=true; bool ret= dfs(board,x+1,y,word,idx+1,vis)|| dfs(board,x-1,y,word,idx+1,vis)|| dfs(board,x,y+1,word,idx+1,vis)|| dfs(board,x,y-1,word,idx+1,vis); vis[x][y]=false; return ret; }public: bool exist(vector<vector<char> >& board, string word) { if(board.empty()||board[0].empty()) return word==""; int n=board.size(),m=board[0].size(); vector<vector<bool> > vis(n,vector<bool>(m,false)); for(int i=0;i<n;++i) for(int j=0;j<m;++j) if(dfs(board,i,j,word,0,vis)) return true; return false; }};
0 0
- Leetcode_c++: Word Search (079)
- leetcode_c++:Search for a Range(034)
- leetcode_c++:Search insert position(035)
- leetcode_c++:Length of Last Word(058)
- leetcode_c++:Search in Rotated Sorted Array(033)
- Leetcode_c++: Search a 2D Matrix (074)
- Leetcode_c++: Search in Rotated Sorted Array II (081)
- LeetCode: Word Search [079]
- 079 Word Search[Leetcode]
- LeetCode 079 Word Search
- leetcode 079 word search
- leetcode_c++:Word Ladder II(126)
- leetcode_c++:哈希:word pattern(290)
- leetcode_c++:Word Ladder II(126)
- Leetcode -- Word Search(Important!)
- LeetCode(79) Word Search
- leetcode_c++:树:Convert Sorted Array to Binary Search Tree(108)
- leetcode_c++:Divide and Conquer:. Search a 2D Matrix II(240)
- 关于51单片机,Arduino,NodeMCU的那点点事。
- android 制作9.png图片
- 欲善其工必先利其器-----ThinkPad E430加装SSD固态硬盘和内存
- handler.post 为什么要将thread对象post到handler中执行呢?
- 给老师表白 求过
- Leetcode_c++: Word Search (079)
- 接口和抽象类
- 成绩评估
- 《Linux命令行与shell脚本》笔记--第7章:管理文件系统.md
- sqlalchemy增删各种操作
- Exception sending context initialized event to listener instance of class org.springframework.web.co
- myeclipse 常用优化设置
- 《Linux命令行与shell脚本》笔记--第9章:使用编辑器
- 利用ViewFlipper和GestureDetector实现两个layout之间动画切换