首页 > 其他 > 详细

leetcode第36题:有效的数独

时间:2019-09-09 22:32:42      阅读:88      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

 

 技术分享图片

 

 解题思路:按行,列,3*3方格读取元素,存入字典中。若字典中该元素的值大于1,则返回false,否则返回true。

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        rows = [{} for i in range(9)]
        column = [{} for i in range(9)]
        box = [{} for i in range(9)]
        for i in range(9):
            for j in range(9):
                # 读取元素
                nums = board[i][j]
                # 计算3*3方格的下标
                index = (i //3) *3 + j//3
                if nums!=.:
                    # 字典的get() 如果nums元素没有,则生成并赋值为0,然后对值加1
                    rows[i][nums] = rows[i].get(nums,0)+1
                    column[j][nums] = column[j].get(nums,0)+1
                    box[index][nums] = box[index].get(nums,0)+1
                    if rows[i][nums]>1 or column[j][nums]>1 or box[index][nums]>1:
                        return False
        return True

难点:

1. 用字典的值的方法来判断元素是否出现两次

2.3*3方格的下标判断:当i<3时, j//3 决定是第几个方格;当i>3时,(i //3 )*3 + j//3 共同决定是第几个方格。

leetcode第36题:有效的数独

原文:https://www.cnblogs.com/cchenyang/p/11494652.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!