• Python——LeetCode刷题——【36. 有效的数独】(字节二面)


    题目描述:

    在这里插入图片描述

    解题思路:

    模拟即可。
    第一种情况逐行检查
    首先,我们逐行遍历这个9X9的二维列表,每行建立一个storage的列表,用于存储每行出现的数字字符。如果字符为".",直接continue。如果为其他字符,则放入storage中。如果遍历到的字符已经出现在了storage中,那么直接return False。(因为证明了数字字符重复出现了!!!)
    第二种情况逐列检查
    逐列遍历,思路同逐行遍历!
    第三种情况检查九宫格
    第一层循环控制,每个九宫格对应的board行索引。第二次循环控制,每个九宫格对应的board列索引。
    第三层循环控制具体到每个九宫格里面的行遍历,第四层循环控制具体到每个九宫格里面的列遍历。
    第三四层循环控制一个3X3格子的检查,思路同逐行遍历和逐列遍历。借助storage列表。

    代码以及注释:

    class Solution:
        def isValidSudoku(self, board: List[List[str]]) -> bool:
            # 逐行检查
            for i in range(9):
                # 存储每行出现的数字字符
                storage = []
                for j in range(9):
                    if board[i][j] == '.':
                        continue
                    if board[i][j] in storage:
                        return False
                    else:
                        storage.append(board[i][j])
            
            # 逐列检查
            for i in range(9):
                # 存储每列出现的数字字符
                storage = []
                for j in range(9):
                    if board[j][i] == '.':
                        continue
                    if board[j][i] in storage:
                        return False
                    else:
                        storage.append(board[j][i])
            
            # 检查九宫格
            # 每个九宫格的开始索引
            for i in range(0, 9, 3):
                for j in range(0, 9, 3):
                    storage = []
                    # 遍历3X3格子中字符
                    for x in range(0, 3):
                        for y in range(0, 3):
                            if board[i+x][j+y] == ".":
                                continue
                            if board[i+x][j+y] in storage:
                                return False
                            else:
                                storage.append(board[i+x][j+y])
            # 全部检查通过
            return True
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    结果:

    在这里插入图片描述

  • 相关阅读:
    rancher部署pv、pvc、离线部署nfs
    [docker] volume 补充 & 环境变量 & 参数
    常用的校验码
    【无标题】
    安卓是属于全人类的还是谷歌的私有产品?
    5.10.WebRTC接口宏
    医学图像配准,voxelmorph框架
    DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368) rust解法
    【医学】模拟骨料填料发生器附matlab代码
    c++模板初阶
  • 原文地址:https://blog.csdn.net/Elon15/article/details/126761785