zoukankan      html  css  js  c++  java
  • leetcode刷题-36有效的数独

    题目

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

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

    思路

    最简单首先比较每一行,比较每一列,再比较每一个方块,实现方法比较简单,但效率很低。

    由于二维数组在列和方块的取值都设置循环操作,因此可以在一个循环中将值取出,放入不同的容器等待判定。

    因此可以分别创建行,列,方块的3个二维数组,从头到尾读取数独中的数据,将其分别放入。

    代码如下

    class Solution:
        def isValidSudoku(self, board: List[List[str]]) -> bool:
            line = [[]for i in range(9)]
            arr = [[]for i in range(9)]
            chunk = [[]for i in range(9)]
            vex = len(board)
            for i in range(vex):
                for j in range(vex):
                    get = board[i][j]
                    k = i//3*3+j//3
                    if get is not '.':
                        if get in line[i] or get in arr[j] or get in chunk[k]:
                            return False
                        line[i].append(get)
                        arr[j].append(get)
                        chunk[k].append(get)
            return True

    有效的提高了执行效率

  • 相关阅读:
    php中的多态
    面向对象的继承与组合
    PHP中的__call和__callStatic方法
    PHP中的__set和__get方法
    PHP中对象的本质
    mysql字符串查找(统计客源)
    linux查看文件大小
    mysql常用字符串操作函数大全,以及实例
    mysql滑动订单问题
    mysql列反转Pivoting
  • 原文地址:https://www.cnblogs.com/mgdzy/p/13418357.html
Copyright © 2011-2022 走看看