leetcode_36. 有效的数独

leetcode_36. 有效的数独

题目

leetcode题目链接

思路分析

题目要求:判断数独是否合法

  1. 设置 每行 每列 每个方格 都先分配一个空集合
  2. 特别是 每个方格的唯一标识的处理
  3. 遍历每一个数,如果不在集合中加入,否则退出false

代码展示

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        #设置 每行 每列 每个方格 都先分配一个空集合
        hangset = [set() for i in range(9)]
        lieset = [set() for i in range(9)]
        juzhengset = [set() for i in range(9)]

        for i in range(9):
            for j in range(9):
                # board[i][j]表示当前i行j列的位置的元素
                juzheng = (i//3)*3+(j//3)
                #通过juzheng这个变量来判定不同的方格
                if board[i][j] !='.':
                    #如果当前元素不在对应的集合中,加入
                    if board[i][j] not in hangset[i] and board[i][j] not in lieset[j] and board[i][j] not in juzhengset[juzheng]:
                        hangset[i].add(board[i][j])
                        lieset[j].add(board[i][j])
                        juzhengset[juzheng].add(board[i][j])
                    #如果当前元素在集合中,说明重复,报错
                    else:
                        return False
        return True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值