题目
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
思路
最简单首先比较每一行,比较每一列,再比较每一个方块,实现方法比较简单,但效率很低。
由于二维数组在列和方块的取值都设置循环操作,因此可以在一个循环中将值取出,放入不同的容器等待判定。
因此可以分别创建行,列,方块的3个二维数组,从头到尾读取数独中的数据,将其分别放入。
代码如下
class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: line = [[]for i in range(9)] arr = [[]for i in range(9)] chunk = [[]for i in range(9)] vex = len(board) for i in range(vex): for j in range(vex): get = board[i][j] k = i//3*3+j//3 if get is not '.': if get in line[i] or get in arr[j] or get in chunk[k]: return False line[i].append(get) arr[j].append(get) chunk[k].append(get) return True
有效的提高了执行效率