leetcode -- 36.有效的数独
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
- 数字
1-9
在每一行只能出现一次。 - 数字
1-9
在每一列只能出现一次。 - 数字
1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次。
上图是一个部分填充的有效的数独。
数独部分空格内已填入了数字,空白格用 '.'
表示。
解题思路:主要采用set这种数据结构,集合(set)是一个无序的不重复元素序列。
三种不重复的情况,行可以存为(行数,数据),列可以存为(数据,列数),然后3*3的小格子可以存为(行数//3, 列数//3, 数据),用以区分
1 class Solution(object): 2 def isValidSudoku(self, board): 3 """ 4 :type board: List[List[str]] 5 :rtype: bool 6 """ 7 big = set() 8 for i in range(0,9): 9 for j in range(0,9): 10 cur = board[i][j] 11 if cur != ".": 12 if (i, cur) in big or (cur, j) in big or (i//3, j//3, cur) in big: 13 return False 14 big.add((i, cur)) 15 big.add((cur, j)) 16 big.add((i//3, j//3, cur)) 17 return True