Skip to content

Commit

Permalink
Sync LeetCode submission Runtime - 490 ms (47.23%), Memory - 51.7 MB …
Browse files Browse the repository at this point in the history
…(52.51%)
  • Loading branch information
DhanushNehru committed Apr 3, 2024
1 parent ed90ea6 commit 528e3ce
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 0 deletions.
39 changes: 39 additions & 0 deletions 0079-word-search/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<p>Given an <code>m x n</code> grid of characters <code>board</code> and a string <code>word</code>, return <code>true</code> <em>if</em> <code>word</code> <em>exists in the grid</em>.</p>

<p>The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically neighboring. The same letter cell may not be used more than once.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2020/11/04/word2.jpg" style="width: 322px; height: 242px;" />
<pre>
<strong>Input:</strong> board = [[&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;E&quot;],[&quot;S&quot;,&quot;F&quot;,&quot;C&quot;,&quot;S&quot;],[&quot;A&quot;,&quot;D&quot;,&quot;E&quot;,&quot;E&quot;]], word = &quot;ABCCED&quot;
<strong>Output:</strong> true
</pre>

<p><strong class="example">Example 2:</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2020/11/04/word-1.jpg" style="width: 322px; height: 242px;" />
<pre>
<strong>Input:</strong> board = [[&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;E&quot;],[&quot;S&quot;,&quot;F&quot;,&quot;C&quot;,&quot;S&quot;],[&quot;A&quot;,&quot;D&quot;,&quot;E&quot;,&quot;E&quot;]], word = &quot;SEE&quot;
<strong>Output:</strong> true
</pre>

<p><strong class="example">Example 3:</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2020/10/15/word3.jpg" style="width: 322px; height: 242px;" />
<pre>
<strong>Input:</strong> board = [[&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;E&quot;],[&quot;S&quot;,&quot;F&quot;,&quot;C&quot;,&quot;S&quot;],[&quot;A&quot;,&quot;D&quot;,&quot;E&quot;,&quot;E&quot;]], word = &quot;ABCB&quot;
<strong>Output:</strong> false
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
<li><code>m == board.length</code></li>
<li><code>n = board[i].length</code></li>
<li><code>1 &lt;= m, n &lt;= 6</code></li>
<li><code>1 &lt;= word.length &lt;= 15</code></li>
<li><code>board</code> and <code>word</code> consists of only lowercase and uppercase English letters.</li>
</ul>

<p>&nbsp;</p>
<p><strong>Follow up:</strong> Could you use search pruning to make your solution faster with a larger <code>board</code>?</p>
45 changes: 45 additions & 0 deletions 0079-word-search/solution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* @param {character[][]} board
* @param {string} word
* @return {boolean}
*/
var exist = function(board, word) {
const mLength = board.length

if(mLength == 0){
return false;
}

const nLength = board[0].length

const directions = [[-1, 0], [0, 1], [1, 0], [0, -1]];

const check = (x,y,k) => {
if (board[x][y] !== word[k]) return false;
if (k === word.length - 1) return true;

board[x][y] = '*'; // mark it as visited

for (const [dx, dy] of directions) {
const i = x + dx;
const j = y + dy;
if (i >= 0 && i < mLength && j >= 0 && j < nLength) {
if (check(i, j, k + 1)) return true;
}
}

board[x][y] = word[k]; // reset the value
return false;
}

for(let i=0;i<mLength;i++){
for(let j=0;j<nLength;j++){
console.log(" I ", i , " J ", j)
if(check(i,j,0)){
return true;
}
}
}

return false;
};

0 comments on commit 528e3ce

Please sign in to comment.