
									 Problem
								
								
									 Solution
								
								
									 Submissions
								
								
							Word Search II using Trie
								Certification: Advanced Level
								Accuracy: 100%
								Submissions: 1
								Points: 15
							
							Write a Java program to find all words in a given board of characters. The words can be constructed from letters of adjacent cells (horizontally, vertically, or diagonally), and each letter cell can only be used once in a word. You are given a 2D board of characters and a list of words to find.
Example 1
- Input: 
board = [
 ['o','a','a','n'],
 ['e','t','a','e'],
 ['i','h','k','r'],
 ['i','f','l','v'] ]
- words = ["oath","pea","eat","rain"]
- Output: ["eat","oath"]
- Explanation: For "oath", we can find it by starting at board[0][0] ('o') and moving to adjacent cells: 'a' at [0][1], 't' at [1][1], and 'h' at [2][1]. For "eat", we can find a path through adjacent cells.
Example 2
- Input: 
board = [
 ['a','b'],
 ['c','d'] ]
 words = ["abcd","abad","acbd","abdc"]
- Output: ["abcd"]
- Explanation: We can find "abcd" by starting at board[0][0] ('a'), then 'b' at [0][1], then 'c' at [1][0], and finally 'd' at [1][1].
Constraints
- 1 <= board.length, board[i].length <= 12
- board[i][j] is a lowercase English letter
- 1 <= words.length <= 3 * 10^4
- 1 <= words[i].length <= 10
- All words in the input list are unique
- Time Complexity: O(M * N * 4^L), where M and N are the dimensions of the board and L is the maximum length of a word
- Space Complexity: O(K), where K is the total number of characters in all words
Editorial
									
												
My Submissions
										All Solutions
									| Lang | Status | Date | Code | 
|---|---|---|---|
| You do not have any submissions for this problem. | |||
| User | Lang | Status | Date | Code | 
|---|---|---|---|---|
| No submissions found. | ||||
Solution Hints
- Build a Trie data structure from the list of words to search for
- Use a depth-first search (DFS) starting from each cell in the board
- During DFS, match characters on the board with nodes in the Trie
- Use a visited matrix to avoid reusing the same cell for a single word
- When a complete word is found, add it to the result set
- Use a set to avoid adding duplicate words to the result
- Optimize by pruning the Trie as words are found
