1
+ // Runtime: 465 ms (Top 65.47%) | Memory: 8.2 MB (Top 18.19%)
1
2
class Solution {
2
3
public:
3
- bool flag=false ;
4
- void exist (int k,int i ,int j,string& word,vector<vector<char >>& board,vector<vector<int >>& vis,int n,int m){
5
- if (k==word.size ()){
6
- flag=true ;
7
- return ;
8
- }
9
- // Down
10
- if (!flag && i+1 <m && !vis[i+1 ][j] && board[i+1 ][j]==word[k]){
11
- vis[i][j]=1 ;
12
- exist (k+1 ,i+1 ,j,word,board,vis,n,m);
13
- vis[i][j]=0 ;
14
- }
15
- // Left
16
- if (!flag && j-1 >=0 && !vis[i][j-1 ] && board[i][j-1 ]==word[k]){
17
- vis[i][j]=1 ;
18
- exist (k+1 ,i,j-1 ,word,board,vis,n,m);
19
- vis[i][j]=0 ;
20
- }
21
- // Right
22
- if (!flag && j+1 <n && !vis[i][j+1 ] && board[i][j+1 ]==word[k]){
23
- vis[i][j]=1 ;
24
- exist (k+1 ,i,j+1 ,word,board,vis,n,m);
25
- vis[i][j]=0 ;
26
- }
27
- // up
28
- if (!flag && i-1 >=0 && !vis[i-1 ][j] && board[i-1 ][j]==word[k]){
29
- vis[i][j]=1 ;
30
- exist (k+1 ,i-1 ,j,word,board,vis,n,m);
31
- vis[i][j]=0 ;
32
- }
33
- }
4
+ bool flag=false ;
5
+ void exist (int k,int i ,int j,string& word,vector<vector<char >>& board,vector<vector<int >>& vis,int n,int m){
6
+ if (k==word.size ()){
7
+ flag=true ;
8
+ return ;
9
+ }
10
+ // Down
11
+ if (!flag && i+1 <m && !vis[i+1 ][j] && board[i+1 ][j]==word[k]){
12
+ vis[i][j]=1 ;
13
+ exist (k+1 ,i+1 ,j,word,board,vis,n,m);
14
+ vis[i][j]=0 ;
15
+ }
16
+ // Left
17
+ if (!flag && j-1 >=0 && !vis[i][j-1 ] && board[i][j-1 ]==word[k]){
18
+ vis[i][j]=1 ;
19
+ exist (k+1 ,i,j-1 ,word,board,vis,n,m);
20
+ vis[i][j]=0 ;
21
+ }
22
+ // Right
23
+ if (!flag && j+1 <n && !vis[i][j+1 ] && board[i][j+1 ]==word[k]){
24
+ vis[i][j]=1 ;
25
+ exist (k+1 ,i,j+1 ,word,board,vis,n,m);
26
+ vis[i][j]=0 ;
27
+ }
28
+ // up
29
+ if (!flag && i-1 >=0 && !vis[i-1 ][j] && board[i-1 ][j]==word[k]){
30
+ vis[i][j]=1 ;
31
+ exist (k+1 ,i-1 ,j,word,board,vis,n,m);
32
+ vis[i][j]=0 ;
33
+ }
34
+ }
34
35
35
- bool exist (vector<vector<char >>& board, string word) {
36
- int m = board.size ();
37
- int n = board[0 ].size ();
38
- vector<vector<int >> vis (m,vector<int >(n,0 ));
39
- for (int i=0 ;i<m;i++){
40
- for (int j=0 ;j<n;j++){
41
- if (word[0 ]==board[i][j]) exist (1 ,i,j,word,board,vis,n,m);
42
- if (flag) return flag;
43
- }
44
- }
45
- return false ;
46
- }
36
+ bool exist (vector<vector<char >>& board, string word) {
37
+ int m = board.size ();
38
+ int n = board[0 ].size ();
39
+ vector<vector<int >> vis (m,vector<int >(n,0 ));
40
+ for (int i=0 ;i<m;i++){
41
+ for (int j=0 ;j<n;j++){
42
+ if (word[0 ]==board[i][j]) exist (1 ,i,j,word,board,vis,n,m);
43
+ if (flag) return flag;
44
+ }
45
+ }
46
+ return false ;
47
+ }
47
48
};
0 commit comments