47.leetcode36_valid_suduko

1.题目分析

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.


A partially filled sudoku which is valid.

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

2.题目分析

根据note可以知道,这并不是个数独问题。只需要检查在每行每列及每个九宫格内数字是否有重复出现的即可

3.解题思路

分别检查每行每列每个九宫格的数字是否重复。

Python代码(251ms)

class Solution(object):
    def isValidSudoku(self, board):
        """
        :type board: List[List[str]]
        :rtype: bool
        """
        temp1=[]
        temp2=[]
        for i in range(0,9):
            temp1.append([])
        for i in range(0,9):
            temp2.append([]) 
        #temp1储存每列数字  
        for i in range(0,9):
            for j in range(0,9):
                temp1[i].append(board[j][i])
        #temp2储存每个九宫格数字
        k=0
        for i in range(0,9,3):
            for j in range(0,9,3):
                for row in range(i,i+3):
                    for col in range(j,j+3):
                        temp2[k].append(board[row][col])
                k+=1
        print temp2
        #开始检查是否满足题目要求
        for i in range(0,9):
            if self.isValid(board[i])==False or self.isValid(temp1[i])==False or self.isValid(temp2[i])==False:
                return False
        return True
    #定义isValid函数检查是否合法
    def isValid(self,nums):
        temp=[]
        for i in range(0,9):
            if nums[i] not in temp and nums[i]!='.':
                temp.append(nums[i])
                continue
            else:
                if nums[i]=='.':
                    continue
                return False
        return True
原文地址:https://www.cnblogs.com/19991201xiao/p/8491006.html