leetcode算法题第36题:有效的数独
题目:
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
1.数字 1-9 在每一行只能出现一次。
2.数字 1-9 在每一列只能出现一次。
3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
注意:
- 一个有效的数独(部分已被填充)不一定是可解的。
- 只需要根据以上规则,验证已经填入的数字是否有效即可。
- 空白格用
'.'
表示。
解题思路:哈希表+一次遍历
有效的数独满足以下三个条件:
1.同一个数字在每一行只能出现一次;
2.同一个数字在每一列只能出现一次;
3.同一个数字在每一个小九宫格只能出现一次。
具体做法是,创建二维数组row 和col 分别记录数独的每一行和每一列中的每个数字的出现次数,创建三维数组 palace 记录数独的每一个小九宫格中的每个数字的出现次数,如果有重复则返回False,否则将该数加入到对应的行,列,小九宫格中。
注意:每一个数值board[i][j],对应的是下标为 [i//3][j//3]的九宫格
代码: