算法每日一题(python,2024.05.27) day.9

题目来源(力扣. - 力扣(LeetCode),中等)

 4186315cf19f4638a0e2a1bb3044ce93.png

解题思路:

直接循环套循环判断,建立集合用于每行/列/格的是否重合的判断,若出现重合的情况则直接返回False,如果循环结束未出现错误则最后返回True,h,l分别用于格内的行与列的判断,将三个循环合并在一起可以增加函数的间接性。

代码实现:

for i in range(9):
    row,col,ngg=set(),set(),set()
    for j in range(9):
        if board[i][j]!=".":
            if board[i][j] in row:
                return False
            row.add(board[i][j])
        if board[j][i]!=".":
            if board[j][i] in col:
                return False
            col.add(board[j][i])
        h,l=i//3*3+j//3,i%3*3+j%3
        if board[h][l]!= ".":
            if board[h][l] in ngg:
                return False
            ngg.add(board[h][l])
return True

总结: 

已知需要判断行/列/格三个不同位置的数字是否出现重复的情况,而由三者的类似性,我们可以将三个二重循环合并为一个循环,最后得出结果(哈希表的方法还不懂,正在争取早日解决哈希表相关的方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neophyte0608

你的鼓励将使我创作学的更加快乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值