有效数独
题目要求

解题思路
一个简单的方法是,遍历9*9书读三次,以确保:
- 行中没有重复的数字
 - 列中没有重复的数字
 3*3子数独中没有重复的数字
但是,实际上,所有的一切都以可以在一次迭代中完成
可以使用box_index = (row/3*3 + columns / 3,其中/是整出
如何确保行、列、子数独没有重复项
可以利用value -> count哈希映射来跟踪所有已经遇到的值
代码
class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        # init data
        rows = [{} for i in range(9)]
        columns = [{} for i in range(9)]
        boxes = [{} for i in range(9)]
        # validate a board
        for i in range(9):
            for j in range(9):
                num = board[i][j]
                if num != '.':
                    num = int(num)
                    box_index = (i // 3 ) * 3 + j // 3
                    
                    # keep the current cell value
                    rows[i][num] = rows[i].get(num, 0) + 1
                    columns[j][num] = columns[j].get(num, 0) + 1
                    boxes[box_index][num] = boxes[box_index].get(num, 0) + 1
                    
                    # check if this value has been already seen before
                    if rows[i][num] > 1 or columns[j][num] > 1 or boxes[box_index][num] > 1:
                        return False         
        return True
 
复杂度分析
时间复杂度: 
     
      
       
       
         O 
        
       
         ( 
        
       
         N 
        
       
         ) 
        
       
      
        O(N) 
       
      
    O(N)
 空间复杂度: 
     
      
       
       
         O 
        
       
         ( 
        
       
         1 
        
       
         ) 
        
       
      
        O(1) 
       
      
    O(1)



















