zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):哈希表类:第36题:有效的数独:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

    题目:

    判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

    数字 1-9 在每一行只能出现一次。
    数字 1-9 在每一列只能出现一次。
    数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

    上图是一个部分填充的有效的数独。

    数独部分空格内已填入了数字,空白格用 '.' 表示。

    说明:

    一个有效的数独(部分已被填充)不一定是可解的。
    只需要根据以上规则,验证已经填入的数字是否有效即可。
    给定数独序列只包含数字 1-9 和字符 '.' 。
    给定数独永远是 9x9 形式的。

    思路:

    这道题好像是贝壳找房还是美团点评的一道笔试题,记得当时用暴力法解也没解对,看来官方解法,发现还是使用哈希表做来的快又好,代码可解读性高又简洁。

    程序:

    class Solution:
        def isValidSudoku(self, board: List[List[str]]) -> bool:
            rows = len(board)
            columns = len(board[0])
            myHashMap1 = [{} for index in range(9)]
            myHashMap2 = [{} for index in range(9)]
            myHashMap3 = [{} for index in range(9)]
            for index1 in range(rows):
                for index2 in range(columns):
                    if board[index1][index2] != '.':
                        data = int(board[index1][index2])
                        smallBoardIndex = (index1 // 3) * 3 + (index2 // 3)
                        myHashMap1[index1][data] = myHashMap1[index1].get(data, 0) + 1
                        myHashMap2[index2][data] = myHashMap2[index2].get(data, 0) + 1
                        myHashMap3[smallBoardIndex][data] = myHashMap3[smallBoardIndex].get(data, 0) + 1
                        if myHashMap1[index1][data] > 1 or myHashMap2[index2][data] > 1 or myHashMap3[smallBoardIndex][data] > 1:
                            return False
            return True
  • 相关阅读:
    多表联合查询,利用 concat 模糊搜索
    order by 中利用 case when 排序
    Quartz.NET 3.0.7 + MySql 动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)
    ASP.NET Core 2.2 基础知识(十八) 托管和部署 概述
    ASP.NET Core 2.2 基础知识(十七) SignalR 一个极其简陋的聊天室
    ASP.NET Core 2.2 基础知识(十六) SignalR 概述
    ASP.NET Core 2.2 基础知识(十五) Swagger
    ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
    linux磁盘管理 磁盘查看操作
    linux磁盘管理 文件挂载
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12792446.html
Copyright © 2011-2022 走看看