问题:
请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 . 表示。
注意事项:一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。
分析:
首先明确合法要求:
1. 每行数字不重复
2. 每列数字不重复
3. 每个九宫格内数字不重复
思路:
- 判断每行数字不重复:使用9*9的布尔型数组row[][],初始化时元素全为false。遍历输入的数组,给数组row赋值,raw[i][j] = true, 其中 i 表示行数,j表示该行中出现的数字,即第i行出现过j,则row[i][j] = true。遍历赋值的时候如果发现raw[i][j]已经为true,直接返回false(不合法)。
- 判断列的方式同行。
- 判断每个九宫格内数字不重复:方法与行类似,但是这时候的i表示的不是行数,而是第几个九宫格(从左到右,从上到下的顺序)。第几个九宫格的计算方