首先记录自己学到的一个知识点。dict.get()
dict.get(key , None)是作为一个字典查找来用的,注意只是查找,不是覆盖原值。查的到就返回key对应的value,查不到就返回default值。
本题就是遍历每一行,每一列,每一个子块,通过字典查找,get一下,如果查到了说明原来就存在即不是有效数独,如果查不到就返回0,说明是有效数独。
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
rows = [{} for i in range(9)]
columns = [{} for i in range(9)]
boxes = [{} for i in range(9)]
for i in range(9):
for j in range(9):
num = board[i][j]
if num != ',':
num = int(num)
box_index = (i // 3) *3 + j // 3
rows[i][num] = rows[i].get(num , 0)+1
columns[j][num] = columns[j].get(num , 0) +1
boxes[box_index][num] = boxes[box_index].get(num , 0)+1
if rows[i][num] >1 or columns[j][num] >1 or boxes[box_index][num]>1 :
return False
return True