https://leetcode.com/problems/valid-sudoku/
数独的要求 1除了1-9不允许有其他字符 (此题里可以有" . ")
2. 每个数字当前行,列,方格只出现一次
class Solution:
# @param board, a 9x9 2D array
# @return a boolean
def inthecube(self,i,j,board):
#获得其所在的cube里的其余8个格的
cube=[]
t=(i/3)*3
d=(j/3)*3
cube.append(board[t][d])
cube.append(board[t][d+1])
cube.append(board[t][d+2])
cube.append(board[t+1][d])
cube.append(board[t+1][d+1])
cube.append(board[t+1][d+2])
cube.append(board[t+2][d])
cube.append(board[t+2][d+1])
cube.append(board[t+2][d+2])
cube.remove(board[i][j])
return cube
def isValidSudoku(self, board):
#判断它是不是满足数独的条件 横竖方格都没重复
n=0
list=['1','2','3','4','5','6','7','8','9','.']
list1=['1','2','3','4','5','6','7','8','9']
#除了数字还有其他的返回False‘
for i in range(9):
for j in range(9):
if board[i][j] not in list:
return False
for i in range(9):
for j in range(9):
if board[i][j] in list1:
#数字部分和所在行列里是否有重复数字
for x in range(i+1,9):
if board[x][j]==board[i][j]:
return False
for y in range(j+1,9):
if board[i][y]==board[i][j]:
return False
#数字所在的方格是否有重复
thecube=Solution().inthecube(i,j,board)
if board[i][j] in thecube:
return False
return True