36. Valid Sudoku

class Solution {
    public boolean isValidSudoku(char[][] board) {
        if (board == null || board.length == 0) return false;
        int n = board.length, m = board[0].length;

        //row
        for (int i = 0; i < n; i++){
            Set<Integer> hash = new HashSet<>();
            for (int j = 0; j < m; j++){
                if (board[i][j] == '.') continue;
                int num = board[i][j] - '0';
                if (hash.contains(num)) return false;
                hash.add(num);
            }
        }

        //col
        for (int j = 0; j < m; j++){
            Set<Integer> hash = new HashSet<>();
            for (int i = 0; i < n; i++){
                if (board[i][j] == '.') continue;
                int num = board[i][j] - '0';
                if (hash.contains(num)) return false;
                hash.add(num);
            }
        }

        //cell
        for (int i = 0; i < 9; i+=3){
            for (int j = 0; j < 9; j+=3){
                Set<Integer> hash = new HashSet<>();
                for (int k = 0; k < 9; k++){
                    if (board[i + k / 3][j + k % 3] == '.') continue;
                    int num = board[i + k / 3][j + k % 3] - '0';
                    if (hash.contains(num)) return false;
                    hash.add(num);
                }
            }
        }

        return true;

    }
}

results for ""

    No results matching ""