36. Valid Sudoku
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.
题意:
确定给出的九宫格是否一个有效的数独,数独谜题的根据:规则。数独板可能是部分元素填充,没填充的元素用字符“.”代替。
注意 :一个有效的数独板(部分填充)不一定是可解的,只需要验证填充的单元格是否有效。
思路:
注意到题目中说的,只要当前已经填充的数字是合法的就可以,不一定要这个数独是有解。因此只需要判断9*9网格的每一行、每一列、9个小九宫格是否合法。即如果在每一行、每一列、每个9个小九宫格内,某个数字重复出现了,当前数独就是不合法的。 其中一种简单方法就是把行、列、九宫格、分三个两重循环来分别判断是否合法。
其实只需要一个两重循环即可,在双重循环时,我们默认了第一重循环表示矩阵的行、第二重循环表示矩阵的列。可以换一种思路:
- 在检测行是否合法时,i 表示矩阵的行,j 表示矩阵的列。
- 检测列是否合法时,i 表示矩阵的列,j 表示矩阵的行。
- 检测九宫格是否合法时,i 表示九宫格的标号,j 表示九宫格里的每个元素(只是我们需要根据i、j定位相应的元素到原来的矩阵:第 i 个九宫格里面的第 j 个元素在原矩阵的第 3(i/3) + j/3 行,第 3\(i%3) + j%3)列,“/” 表示整数除法)。
1 | class Solution { |
Java Code:
1 | class Solution { |