Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Word Search in Grid Using Backtracking in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind backtracking in the Word Search problem?
Backtracking tries to build the word letter by letter by exploring all possible paths in the grid. If a path does not lead to the full word, it goes back (backtracks) and tries another path.
Click to reveal answer
beginner
In the Word Search problem, why do we mark cells as visited during backtracking?
We mark cells as visited to avoid using the same cell more than once in the current word path, preventing cycles and incorrect matches.
Click to reveal answer
beginner
What are the typical directions explored from a cell in the Word Search grid?
From each cell, we explore up, down, left, and right neighbors to find the next letter in the word.
Click to reveal answer
beginner
How does the backtracking function know when to stop and return true?
When the current index reaches the length of the word, it means all letters have been matched successfully, so it returns true.
Click to reveal answer
intermediate
What is the time complexity of the Word Search backtracking solution in the worst case?
The worst-case time complexity is O(N * 3^L), where N is the number of cells in the grid and L is the length of the word. This is because from each cell, we explore up to 3 directions (excluding the direction we came from) for each letter.
Click to reveal answer
Which of these is NOT a valid move direction in the Word Search backtracking?
ADiagonal
BDown
CLeft
DUp
Why do we need to unmark a cell as visited after exploring a path?
ATo speed up the search
BTo mark the cell as blocked
CTo prevent revisiting the cell
DTo allow the cell to be used in other paths
What does it mean if the backtracking function returns false?
AThe current path does not lead to the word
BThe word is found
CThe grid is empty
DThe word is empty
What is the first step in the Word Search backtracking algorithm?
ACheck if the word is empty
BMark all cells as visited
CStart from each cell in the grid
DReturn false immediately
If the word length is 1, what is the simplest check to find it in the grid?
ARun full backtracking
BCheck if any cell matches the single letter
CCheck diagonals only
DReturn false
Explain how backtracking works to find a word in a grid step-by-step.
Think about trying paths and going back if stuck.
You got /7 concepts.
    Describe why marking cells as visited and unvisited is important in the Word Search backtracking.
    Consider what happens if you don't mark cells.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of backtracking in the Word Search problem on a grid?
      easy
      A. To sort the grid alphabetically
      B. To explore all possible paths to find the word
      C. To count the number of words in the grid
      D. To replace characters in the grid

      Solution

      1. Step 1: Understand backtracking role

        Backtracking tries all possible paths from each cell to find the target word.
      2. Step 2: Eliminate other options

        Sorting, counting, or replacing characters are unrelated to backtracking in word search.
      3. Final Answer:

        To explore all possible paths to find the word -> Option B
      4. Quick Check:

        Backtracking = Explore paths [OK]
      Hint: Backtracking means trying all paths step-by-step [OK]
      Common Mistakes:
      • Thinking backtracking sorts or counts
      • Confusing backtracking with simple search
      • Ignoring path exploration in grid
      2. Which of the following TypeScript function signatures correctly represents a backtracking helper for word search in a grid?
      easy
      A. function backtrack(grid: string[][], word: string, row: number, col: number, index: number): boolean
      B. function backtrack(grid: number[], word: string): void
      C. function backtrack(word: string, grid: string[][]): number
      D. function backtrack(grid: string[][], word: string): string

      Solution

      1. Step 1: Identify correct parameters

        The helper needs the grid, the word, current position (row, col), and index in word to track progress.
      2. Step 2: Check return type

        It returns boolean to indicate if word is found along the path.
      3. Final Answer:

        function backtrack(grid: string[][], word: string, row: number, col: number, index: number): boolean -> Option A
      4. Quick Check:

        Correct params and boolean return = function backtrack(grid: string[][], word: string, row: number, col: number, index: number): boolean [OK]
      Hint: Helper needs grid, position, index, returns boolean [OK]
      Common Mistakes:
      • Missing row and col parameters
      • Wrong return type (void or number)
      • Incorrect parameter order
      3. What will be the output of the following TypeScript code snippet?
      const board = [
        ['A','B','C','E'],
        ['S','F','C','S'],
        ['A','D','E','E']
      ];
      
      function exist(board: string[][], word: string): boolean {
        const rows = board.length;
        const cols = board[0].length;
      
        function backtrack(r: number, c: number, i: number): boolean {
          if (i === word.length) return true;
          if (r < 0 || c < 0 || r >= rows || c >= cols || board[r][c] !== word[i]) return false;
      
          const temp = board[r][c];
          board[r][c] = '#';
      
          const found = backtrack(r+1, c, i+1) || backtrack(r-1, c, i+1) || backtrack(r, c+1, i+1) || backtrack(r, c-1, i+1);
      
          board[r][c] = temp;
          return found;
        }
      
        for (let r = 0; r < rows; r++) {
          for (let c = 0; c < cols; c++) {
            if (backtrack(r, c, 0)) return true;
          }
        }
        return false;
      }
      
      console.log(exist(board, 'ABCCED'));
      medium
      A. SyntaxError
      B. false
      C. true
      D. undefined

      Solution

      1. Step 1: Understand the board and word

        The word 'ABCCED' can be found by moving right and down in the grid starting at (0,0).
      2. Step 2: Trace backtracking calls

        Backtracking marks visited cells and explores neighbors; it finds the word successfully and returns true.
      3. Final Answer:

        true -> Option C
      4. Quick Check:

        Word found in grid = true [OK]
      Hint: Trace path for word in grid; returns true if found [OK]
      Common Mistakes:
      • Assuming word is not found
      • Ignoring visited cell marking
      • Confusing return values
      4. Identify the bug in this backtracking function for word search and select the fix:
      function backtrack(r: number, c: number, i: number): boolean {
        if (i === word.length) return true;
        if (r < 0 || c < 0 || r >= rows || c >= cols) return false;
        if (board[r][c] !== word[i]) return false;
      
        board[r][c] = '#';
      
        const found = backtrack(r+1, c, i+1) || backtrack(r-1, c, i+1) || backtrack(r, c+1, i+1) || backtrack(r, c-1, i+1);
      
        return found;
      }
      medium
      A. Restore board[r][c] to original after recursive calls
      B. Change base case to i > word.length
      C. Remove boundary checks
      D. Return false immediately after marking cell

      Solution

      1. Step 1: Identify missing restoration

        The function marks board[r][c] as '#' but never restores it after recursion, corrupting the grid.
      2. Step 2: Fix by restoring cell

        After recursive calls, restore board[r][c] to original character to allow other paths to use it.
      3. Final Answer:

        Restore board[r][c] to original after recursive calls -> Option A
      4. Quick Check:

        Restore cell after recursion = Restore board[r][c] to original after recursive calls [OK]
      Hint: Always restore grid cell after backtracking recursion [OK]
      Common Mistakes:
      • Forgetting to restore visited cells
      • Changing base case incorrectly
      • Removing necessary boundary checks
      5. Given a 4x4 grid and a list of words, how would you efficiently find all words present using backtracking? Choose the best approach.
      hard
      A. Replace all grid letters with '#' before searching
      B. Run backtracking separately for each word on the entire grid
      C. Sort words alphabetically and search only the first word
      D. Use a Trie to store words and backtrack once to find all matches

      Solution

      1. Step 1: Understand inefficiency of separate searches

        Running backtracking for each word separately repeats work and is slow for many words.
      2. Step 2: Use Trie with backtracking

        Building a Trie of all words allows one backtracking pass to find all words efficiently by pruning invalid paths early.
      3. Final Answer:

        Use a Trie to store words and backtrack once to find all matches -> Option D
      4. Quick Check:

        Trie + single backtracking = efficient search [OK]
      Hint: Combine Trie with backtracking for multiple words [OK]
      Common Mistakes:
      • Searching each word separately wastes time
      • Sorting words doesn't help search
      • Modifying grid destructively before search
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard