AlgoLounge

Valid Sudoku

medium

Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

  1. Each row must contain the digits 1-9 without repetition.
  2. Each column must contain the digits 1-9 without repetition.
  3. Each of the nine 3 x 3 sub-boxes of the grid must contain the 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 mentioned rules.

Examples

Example 1

Input:  board = [[5,3,.,...],[6,.,.,1,9,5,...],[.,9,8,...],[8,...],[4,...],[7,...],[.,6,...],[.,...],[.,...]]
Output: true

Example 2

Input:  board = [[8,3,.,...],[6,.,.,1,9,5,...],[.,9,8,...],[8,...],[4,...],[7,...],[.,6,...],[.,...],[.,...]]
Output: false

Two 8's appear in the top-left 3x3 sub-box, making the board invalid.

Constraints

  • board.length == 9
  • board[i].length == 9
  • board[i][j] is a digit 1-9 or '.'
TypeScript
Loading editor…
List of test cases (12)
Case 1
board = [["5","3",".",".",".",".",".",".","."],["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",".",".",".","9"]]
Case 2
board = [["8","3",".",".",".",".",".",".","."],["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",".",".",".","9"]]
Case 3
board = [[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."]]
Case 4
board = [["1","2","3","4","5","6","7","8","9"],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."]]
Case 5
board = [["1","1",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."]]
Case 6
board = [["1",".",".",".",".",".",".",".","."],[".","2",".",".",".",".",".",".","."],[".",".","3",".",".",".",".",".","."],[".",".",".","4",".",".",".",".","."],[".",".",".",".","5",".",".",".","."],[".",".",".",".",".","6",".",".","."],[".",".",".",".",".",".","7",".","."],[".",".",".",".",".",".",".",".","9"],[".",".",".",".",".",".",".","1","."]]
Case 7
board = [["1","2","3",".",".",".",".",".","."],["4","5","6",".",".",".",".",".","."],["7","8","9",".",".",".",".",".","."],[".",".",".","1","2","3",".",".","."],[".",".",".","4","5","6",".",".","."],[".",".",".","7","8","9",".",".","."],[".",".",".",".",".",".","1","2","3"],[".",".",".",".",".",".","4","5","6"],[".",".",".",".",".",".","7","8","9"]]
Case 8
board = [["1","2","3",".",".",".",".",".","."],["4","5","6",".",".",".",".",".","."],["1","8","9",".",".",".",".",".","."],[".",".",".","1","2","3",".",".","."],[".",".",".","4","5","6",".",".","."],[".",".",".","7","8","9",".",".","."],[".",".",".",".",".",".","1","2","3"],[".",".",".",".",".",".","4","5","6"],[".",".",".",".",".",".","7","8","9"]]
Case 9
board = [[".",".",".",".",".",".","5",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."],["9","3",".",".","2",".","4",".","."],[".",".","7",".",".",".","3",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".","3","4",".",".",".","."],[".",".",".",".",".","3",".",".","."],[".",".",".",".",".","5","2",".","."]]
Case 10
board = [[".",".","4",".",".",".","6","3","."],[".",".",".",".",".",".",".",".","."],["5",".",".",".",".",".",".","9","."],[".",".",".","5","6",".",".",".","."],["4",".","3",".",".",".",".",".","1"],[".",".",".","7",".",".",".",".",".","."],[".","9",".",".",".",".",".",".","8"],[".",".",".",".",".",".",".",".","."],[".","1","5",".",".",".","4",".","."]]
Case 11
board = [[".",".",".",".","5",".",".","1","."],[".","4",".","3",".",".",".",".","."],[".",".",".",".",".","3",".",".","1"],["8",".",".",".",".",".",".","2","."],[".",".","2",".","7",".",".",".","."],[".","1","5",".",".",".",".",".","."],[".",".",".",".",".","2",".",".","."],[".","2",".","9",".",".",".",".","."],[".",".","4",".",".",".",".",".","."]]
Case 12
board = [["7",".",".",".","4",".",".",".","."],[".",".",".","8","6","5",".",".","."],[".","1",".","2",".",".",".",".","."],[".",".",".",".",".","9",".",".","."],[".",".",".",".","5",".","5",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".","2",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".",".","."]]