
									 Problem
								
								
									 Solution
								
								
									 Submissions
								
								
							Valid Sudoku
								Certification: Basic Level
								Accuracy: 0%
								Submissions: 1
								Points: 10
							
							Write a Java program to determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
1. Each row must contain digits 1-9 without repetition.
2. Each column must contain digits 1-9 without repetition.
3. Each of the nine 3x3 sub-boxes of the grid must contain digits 1-9 without repetition.
Note:
- A Sudoku board (partially filled) could be valid but is not necessarily solvable.
- Only the filled cells need to be validated according to the rules mentioned.
- The Sudoku board is represented as a 9x9 char array where '.' represents empty cells.
Example 1
- Input: board = [
 ["5","3",".",".","7",".",".",".","."],
 ["6",".",".","1","9","5",".",".","."],
 [".","9","8",".",".",".",".","6","."],
 ["8",".",".",".","6",".",".",".","3"],
 ["4",".",".","8",".","3",".",".","1"],
 ["7",".",".",".","2",".",".",".","6"],
 [".","6",".",".",".",".","2","8","."],
 [".",".",".","4","1","9",".",".","5"],
 [".",".",".",".","8",".",".","7","9"]
 ]
- Output: true
- Explanation: - Step 1: Create data structures to track digits in each row, column, and 3x3 sub-box.
- Step 2: Iterate through each cell in the 9x9 Sudoku board.
- Step 3: For each filled cell (non-'.'), check if the digit already exists in the current row.
- Step 4: Check if the digit already exists in the current column.
- Step 5: Check if the digit already exists in the current 3x3 sub-box.
- Step 6: No duplicates are found in any row, column, or sub-box, so the board is valid.
 
Example 2
- Input: board = [
 ["8","3",".",".","7",".",".",".","."],
 ["6",".",".","1","9","5",".",".","."],
 [".","9","8",".",".",".",".","6","."],
 ["8",".",".",".","6",".",".",".","3"],
 ["4",".",".","8",".","3",".",".","1"],
 ["7",".",".",".","2",".",".",".","6"],
 [".","6",".",".",".",".","2","8","."],
 [".",".",".","4","1","9",".",".","5"],
 [".",".",".",".","8",".",".","7","9"]
 ]
- Output: false
- Explanation: - Step 1: Create data structures to track digits in each row, column, and 3x3 sub-box.
- Step 2: Start iterating through the Sudoku board.
- Step 3: Notice that the first cell of the first row contains '8'.
- Step 4: Later, in the first cell of the fourth row, we find another '8'.
- Step 5: Since the digit '8' appears twice in the first column, this violates rule #2.
- Step 6: Return false as the board is invalid.
 
Constraints
- board.length == 9
- board[i].length == 9
- board[i][j] is a digit 1-9 or '.'
- Time Complexity: O(1) - since the board size is fixed at 9x9
- Space Complexity: O(1) - using fixed-size data structures
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
- Use three separate sets of data structures to track digits in each row, column, and 3x3 sub-box
- You can use boolean arrays or HashSets to track seen digits
- For the 3x3 sub-boxes, you need to map each cell (i,j) to its corresponding sub-box index
- Skip empty cells (represented by '.')
- Return false as soon as you encounter a violation of any rule
