题解 | #暮光数独验证#
暮光数独验证
https://www.nowcoder.com/practice/68dd2d15263f433db6ffa0405d08426a
- 题目考察的知识点 : 数组遍历,枚举
- 题目解答方法的文字分析:
- 首先遍历输入二维列表 board 中的每一行,判断其是否符合数独规则:数字 1-9 在每一行只能出现一次。若存在重复数字,则说明不符合规则,返回 False。
- 然后遍历输入二维列表 board 中的每一列,与第一步类似,判断其是否符合数独规则:数字 1-9 在每一列只能出现一次。若存在重复数字,则说明不符合规则,返回 False。
- 接着遍历输入二维列表 board 中的每一个 3x3 的宫格,同样地,判断其是否符合数独规则:数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。若存在重复数字,则说明不符合规则,返回 False。
- 最后如果以上均通过且没有返回,说明输入二维列表 board 是有效的数独,返回 True。
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param board char字符型二维数组 # @return bool布尔型 # class Solution: def isValidTwilightSudoku(self, board: List[List[str]]) -> bool: # 判断行是否合法 for row in board: if not self.isValidList(row): return False # 判断列是否合法 for j in range(9): col = [board[i][j] for i in range(9)] if not self.isValidList(col): return False # 判断 3x3 宫格是否合法 for i in range(0, 9, 3): for j in range(0, 9, 3): block = [board[x][y] for x in range(i, i + 3) for y in range(j, j + 3)] if not self.isValidList(block): return False return True def isValidList(self, lst: List[str]) -> bool: nums = [] for s in lst: if s != ".": nums.append(s) return len(nums) == len(set(nums))
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路