Here, We see Valid Sudoku LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
![Valid Sudoku LeetCode Solution](https://i0.wp.com/totheinnovation.com/wp-content/uploads/2024/02/LeetCode-Problem-Solution.png?resize=200%2C200&ssl=1)
Valid Sudoku LeetCode Solution
Table of Contents
Problem Statement
Determine if a 9 x 9
Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
- Each row must contain the digits
1-9
without repetition. - Each column must contain the digits
1-9
without repetition. - Each of the nine
3 x 3
sub-boxes of the grid must contain the digits1-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 mentioned rules.
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 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: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
Valid Sudoku Leetcode Solution C++
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int row[9][9] = {0}, col[9][9] = {0}, grid_3x3[9][9] = {0};
for(int i = 0; i < board.size(); i++)
for(int j = 0; j < board[i].size(); j++)
if(board[i][j] != '.')
{
int num = board[i][j] - '1', k = i/3*3+j/3; //k for finding grid index from 0 to 8
if(row[i][num] || col[j][num] || grid_3x3[k][num])
return false;
row[i][num] = col[j][num] = grid_3x3[k][num] = 1;
}
return true;
}
};
Code language: PHP (php)
Valid Sudoku Leetcode Solution Java
class Solution {
public boolean isValidSudoku(char[][] board) {
for(int i = 0; i<9; i++){
HashSet<Character> rows = new HashSet<Character>();
HashSet<Character> columns = new HashSet<Character>();
HashSet<Character> cube = new HashSet<Character>();
for (int j = 0; j < 9;j++){
if(board[i][j]!='.' && !rows.add(board[i][j]))
return false;
if(board[j][i]!='.' && !columns.add(board[j][i]))
return false;
int RowIndex = 3*(i/3);
int ColIndex = 3*(i%3);
if(board[RowIndex + j/3][ColIndex + j%3]!='.' && !cube.add(board[RowIndex + j/3][ColIndex + j%3]))
return false;
}
}
return true;
}
}
Code language: PHP (php)
Valid Sudoku Leetcode Solution JavaScript
var isValidSudoku = function(board) {
let rows = new Set();
let cols = new Set();
let boxes = new Set();
let curRowElem;
let curColElem;
let curBoxElem;
for (let i = 0; i < board.length; i += 1) {
for (let j = 0; j < board[0].length; j += 1) {
curRowElem = board[i][j]
curColElem = board[j][i]
curBoxElem = board[3 * Math.floor(i / 3) + Math.floor(j / 3)][((i * 3) % 9) + (j % 3)]
if (rows.has(curRowElem)) return false;
if (curRowElem !== ".") rows.add(curRowElem);
if (cols.has(curColElem)) return false;
if (curColElem !== ".") cols.add(curColElem);
if (boxes.has(curBoxElem)) return false;
if (curBoxElem !== ".") boxes.add(curBoxElem);
}
rows.clear()
cols.clear()
boxes.clear()
}
return true;
};
Code language: JavaScript (javascript)
Valid Sudoku Leetcode Solution Python
class Solution(object):
def isValidSudoku(self, board):
big = set()
for i in xrange(0,9):
for j in xrange(0,9):
if board[i][j]!='.':
cur = board[i][j]
if (i,cur) in big or (cur,j) in big or (i/3,j/3,cur) in big:
return False
big.add((i,cur))
big.add((cur,j))
big.add((i/3,j/3,cur))
return True