September 15, 2019

36. Valid Sudoku

36. Valid Sudoku

class Solution {
    public boolean isValidSudoku(char[][] board) {
        // validate each row
        for (int i = 0; i < 9; i++) {
            boolean[] taken = new boolean[9];
            for (int j = 0; j < 9; j++) {
                char c = board[i][j];
                if (c != '.') {
                    int num = c - '1';
                    if (taken[num]) {
                        return false;
                    }
                    taken[num] = true;
                }
            }
        }
        
        // validate each fol
        for (int i = 0; i < 9; i++) {
            boolean[] taken = new boolean[9];
            for (int j = 0; j < 9; j++) {
                char c = board[j][i];
                if (c != '.') {
                    int num = c - '1';
                    if (taken[num]) {
                        return false;
                    }
                    taken[num] = true;
                }
            }
        }
        
        // validate each 3*3 box
        for (int i = 0; i < 9; i = i + 3) {
            for (int j = 0; j < 9; j = j + 3) {
                boolean[] taken = new boolean[9];
                for (int m = 0; m < 3; m++) {
                    for (int n = 0; n < 3; n++) {
                        char c = board[i + m][j + n];
                        if (c != '.') {
                            int num = c - '1';
                            if (taken[num]) {
                                return false;
                            }
                            taken[num] = true;
                        }
                    }
                }
            }
        }
        return true;
    }
}
comments powered by Disqus