LC 有效的数独
字典(哈希表)
出现错误的情况有:行标或列标一样,都属于大九宫格的同一小九宫格。创建一个字典,键为每个数的字符串形式,值为所在位置列表,通过比较位置列表判断有无重复。
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
dic = dict({})
for i in range(9):
for j in range(9):
if board[i][j] == ".":
continue
if board[i][j] in dic:
for n in range(len(dic[board[i][j]])):
if dic[board[i][j]][n][0] == i or dic[board[i][j]][n][1] == j:
return False
elif dic[board[i][j]][n][0]//3 == i//3 and dic[board[i][j]][n][1]//3 == j//3:
return False
dic[board[i][j]].append([i, j])
else:
dic[board[i][j]] = [[i, j]]
print(dic)
return True