36. Valid Sudoku

Description

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 the digits 1-9 without repetition.

  2. Each column must contain the digits 1-9 without repetition.

  3. Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.

A partially filled Sudoku which is valid.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

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.

Constraints

  • The given board contain only digits 1-9 and the character '.'

  • The given board size is always 9x9.

Approach

Examples

Input:

[

["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

Solutions

/**
 * Time complexity : O(n*n)
 * Space complexity : O(n*n)
 */

class Solution {
    private static final int SIZE = 9;
    
    public boolean isValidSudoku(char[][] board) {
        Set<String> seen = new HashSet<>();
        for(int i = 0; i < SIZE; i++) {
            for(int j = 0; j < SIZE; j++) {
                char ch = board[i][j];
                if(ch != '.') {
                    if(!seen.add(ch + "-r-" + i) || 
                       !seen.add(ch + "-c-" + j) || 
                       !seen.add(ch + "-b-" + i/3 + "-" + j/3)) {
                        return false;
                    }
                }
            }
        }
        return true;
    }
}

Follow up

  • Program for Sudoku Generator - GFG

  • Validity of a given Tic-Tac-Toe board configuration - GFG

Last updated

Was this helpful?