36. Valid Sudoku

根据条件判断,在不为空的格子中,同一列没有相同的元素,同一行没有相同的元素,同一个subgrid没有一样的元素。特别注意边界的取值范围。

public boolean isValidSudoku(char[][] board) {
    for (int i = 0; i < board.length; i++) {
        for (int j = 0; j < board[0].length; j++) {
            if (board[i][j] != '.') { // is not empty
                // same element in the same col
                for (int curX = 0; curX < board.length; curX++) {
                    if (curX != i && board[curX][j] == board[i][j]) return false;
                }
                // same element in the same row
                for (int curY = 0; curY < board.length; curY++) {
                    if (curY != j && board[i][curY] == board[i][j]) return false;
                }
                // same element in the same subgrid
                for (int curX = 3 * (i / 3); curX < 3 * (i / 3 + 1); curX++) {
                    for (int curY = 3 * (j / 3); curY < 3 * (j / 3 + 1); curY++) {
                        if (curX != i && curY != j && board[curX][curY] == board[i][j]) {
                            return false;
                        }
                    }
                }
            }
        }
    }
    return true;
}

results matching ""

    No results matching ""