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.
解法1: O(N N) Time + O(NN) Space, 一次遍历
本题要满足三个条件,行,列以及小方块都不能包含重复的数字。
可以用三个数组记录每一个条件是否满足,因为每个条件有9行,9列或者9个小方块。 每一个条件能出现的数字只有1到9。
那么每次扫描一个数字时,判断三个条件是否出现过一样的数字,如果有则返回false。
这样的做法好处是只需要遍历一次,代码很整洁。
要注意的是在计算小方块的index的时候, 用了k = i / 3 3 + j / 3, 注意这里因为i是int,所以不能把/33抵消掉。
C++
Java
解1法2: O(N * N) Time + O(1) Space, 三次遍历
C++
Java