第九周第二次作业

题目:

36Valid Sudoku

Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

  1. Each row must contain the digits 1-9 without repetition.
  2. Each column must contain the digits 1-9 without repetition.
  3. Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.


算法思路:

    判断每行每列每个九宫格是否出现重复数字:设立一个列表,用于标记1-9数字出现的次数,出现的时候,在列表中对应的索引处加一,同时判断若该数字出现次数超过一次,则返回flase.  如果每行每列每个九宫格都没有重复数字,则返回true。


代码展示:

def isValidSudoku( self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
temp = []
for i in range ( 10 ):
temp. append ( 0 )


#判断每行是否有重复数字
for i in board:
tmp = temp [:: ]
for j in range ( 9 ):
if i [j ] != ' . ':
tmp [ int (i[j] )] += 1
if tmp [ int (i[j])] > 1:
return False
#判断每列是否有重复数字
for j in range ( 9 ):
tmp = temp [:: ]
for i in range ( 9 ):
if board [i ][j ] != ' . ':
tmp [ int (board[i][j] )] += 1
if tmp [ int (board[i][j] )] > 1:
return False

#判断每个九宫格是否有重复数字
for i in range ( 3 ):
i *= 3
for j in range ( 3 ):
j *= 3
tmp = temp [:: ]
for k in range (i, 3 + i):
for l in range (j,j + 3 ):
if board [k ][l ] != ' . ':
tmp [ int (board[k][l])] += 1
if tmp [ int (board[k][l])] > 1:
return False
return True

结果展示:



猜你喜欢

转载自blog.csdn.net/shi_gu_re/article/details/80177516