题目描述
Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
Each row must contain the digits 1-9 without repetition.
Each column must contain the digits 1-9 without repetition.
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.
代码 (Python3)
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
row_hash = [{i : 0 for i in range(1, 10)} for _ in range(9)]
col_hash = [{i : 0 for i in range(1, 10)} for _ in range(9)]
tri_hash = [{i : 0 for i in range(1, 10)} for _ in range(9)]
for i in range(9):
for j in range(9):
if board[i][j] != ".":
num = int(board[i][j])
row_hash[i][num] += 1
col_hash[j][num] += 1
tri_index1 = i // 3
tri_index2 = j // 3
tri_hash[tri_index1 * 3 + tri_index2][num] += 1
if row_hash[i][num] > 1 or col_hash[j][num] > 1 or tri_hash[tri_index1 * 3 + tri_index2][num] > 1:
return False
return True