美文网首页
36. Valid Sudoku

36. Valid Sudoku

作者: April63 | 来源:发表于2018-05-16 21:00 被阅读0次

这一题按照三步走的策略,首先检查每一行是否有重复的,再检查每一列,最后检查每一块,都是按照字典去查找,代码如下:

class Solution(object):
    def isValidSudoku(self, board):
        """
        :type board: List[List[str]]
        :rtype: bool
        """
        for i in range(9):
            row = {}
            for j in range(9):
                if board[i][j] != '.':
                    if board[i][j] not in row:
                        row[board[i][j]] = i
                    else:
                        return False
        for j in range(9):
            col = {}
            for i in range(9):
                if board[i][j] != '.':
                    if board[i][j] not in col:
                        col[board[i][j]] = j
                    else:
                        return False
        for m in range(0,7,3):
            for n in range(0,7,3):
                blo = {}
                for i in range(m,m+3):
                    for j in range(n,n+3):
                        if board[i][j] != '.':
                            if board[i][j] not in blo:
                                blo[board[i][j]] = (m,n)
                            else:
                                return False
        return True

都是哈希表,但人家的代码明显好多了,代码如下:

class Solution(object):
    def isValidSudoku(self, board):
        row = [[] for _ in xrange(9)]
        col = [[] for _ in xrange(9)]
        area = [[] for _ in xrange(9)]
        for i in xrange(9):
            for j in xrange(9):
                element = board[i][j]
                if element != '.':
                    # calculate every sub-boxes, map to the left top element
                    area_left_top_id = i / 3 * 3 + j / 3
                    if element in row[i] or element in col[j] or element in area[area_left_top_id]:
                        return False
                    else:
                        row[i].append(element)
                        col[j].append(element)
                        area[area_left_top_id].append(element)
        return True

相关文章

  • hash_table-special

    目录: 36、 Valid Sudoku 36. Valid Sudoku Determine if a Sudo...

  • Leetcode-36 有效的数独

    36. 有效的数独[https://leetcode-cn.com/problems/valid-sudoku/]...

  • 36. Valid Sudoku

    这一题按照三步走的策略,首先检查每一行是否有重复的,再检查每一列,最后检查每一块,都是按照字典去查找,代码如下: ...

  • 36. Valid Sudoku

    Determine if a 9x9 Sudoku board is valid. Only the filled...

  • 36. Valid Sudoku

    题目 Determine if a Sudoku is valid, according to: Sudoku P...

  • 36. Valid Sudoku

    这题的解法是brute force,复杂度是O(81 + 81)。。。判断每一行每一列的代码我的想法跟code g...

  • 36. Valid Sudoku

    问题 Determine if a Sudoku is valid, according to: Sudoku P...

  • 36. Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzz...

  • 36. Valid Sudoku

    问题描述 Determine if a Sudoku is valid, according to: Sudoku...

  • 36. Valid Sudoku

    题目链接 https://leetcode.com/problems/valid-sudoku/ 解题思路 直接看...

网友评论

      本文标题:36. Valid Sudoku

      本文链接:https://www.haomeiwen.com/subject/sxmmdftx.html