'''
Author: 365JHWZGo
Description: 36. 有效的数独
Date: 2021-10-06 10:49:14
FilePath: Pythontestdemo3.py
LastEditTime: 2021-10-11 18:22:18
LastEditors: 365JHWZGo
'''
class Solution(object):
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
#9*9
t = []
hang = len(board)
lie = len(board[0])
#首先把行和列遍历一遍,如果有元素重复,则直接返回False
for i in range(hang):
l = 0
h = 0
arr = []
for j in range(lie):
if board[i][j] == '.':
l = l + 1
if board[j][i] == '.':
h = h + 1
arr.append(board[j][i])
if len(set(board[i])) - 1 + l != lie:
return False
if len(set(arr)) - 1 + h != hang:
return False
k = 0
#依次遍历9宫格,我的遍历顺序是先朝下
for i in range(hang//3):
res = []
k = 0
for j in range(lie+1):
if j//3==k:
res.extend([board[j][i*3:i*3+3]])
else:
t = list((j for i in res for j in i if j != '.'))
cha = lie-len(list(t))
if len(set(t))+cha != lie:
return False
res = []
k = k+1
if j
先朝下遍历9宫格后朝右遍历



