题解 | #暮光数独验证#

暮光数独验证

https://www.nowcoder.com/practice/68dd2d15263f433db6ffa0405d08426a

  • 题目考察的知识点 : 数组遍历,枚举
  • 题目解答方法的文字分析:
  1. 首先遍历输入二维列表 board 中的每一行,判断其是否符合数独规则:数字 1-9 在每一行只能出现一次。若存在重复数字,则说明不符合规则,返回 False。
  2. 然后遍历输入二维列表 board 中的每一列,与第一步类似,判断其是否符合数独规则:数字 1-9 在每一列只能出现一次。若存在重复数字,则说明不符合规则,返回 False。
  3. 接着遍历输入二维列表 board 中的每一个 3x3 的宫格,同样地,判断其是否符合数独规则:数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。若存在重复数字,则说明不符合规则,返回 False。
  4. 最后如果以上均通过且没有返回,说明输入二维列表 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题的解法思路

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务