有效的数独
class Solution10(object):
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
rows={}
columns= {}
blocks= {}
for i in range(9):
rows[i]=[]
columns[i]=[]
blocks[i]=[]
for i in range(9):
for j in range(9):
if board[i][j]=='.':
pass
else:
rows[i].append(board[i][j])
columns[j].append(board[i][j])
blocks[i//3*3+j//3].append(board[i][j])
for a in rows,columns,blocks:
for _,b in a.items():
if len(b)!=len(set(b)):
return False
return True
解数独
class Solution(object):
def backtrack(self,board):
for i in range(len(board)):
for j in range(len(board[0])):
if board[i][j] != ".": continue
for k in range(1,10):
if self.isValid(i,j,k,board):
board[i][j] = str(k)
if self.backtrack(board): return True
board[i][j] = "."
return False
print(board)
return True
def isValid(self,row,col,val,board):
for i in range(9):
if board[row][i] == str(val):
return False
for j in range(9):
if board[j][col] == str(val):
return False
startRow = (row // 3) * 3
startcol = (col // 3) * 3
for i in range(startRow,startRow + 3):
for j in range(startcol,startcol + 3):
if board[i][j] == str(val):
return False
return True