【发布时间】:2016-11-12 22:49:05
【问题描述】:
我想检查数独在 Java 中是否有效,并且遇到了 (http://leetcode.tgic.me/valid-sudoku/index.html)。
我了解它如何验证行和列,但对于 3x3 网格验证器:
34 for(x = 0; x < mx; x += 3){
35 for(y = 0; y < my; y += 3){
36
37 HashSet<Character> block = new HashSet<Character>();
38
39 for(int offset = 0; offset < 9; offset++){
40 int ox = offset % 3;
41 int oy = offset / 3;
42
43 char c = board[x + ox][y + oy];
44 if(c != '.'){
45 if(block.contains(c)) return false;
46
47 block.add(c);
48 }
49 }
50 }
51 }
什么是offset,它对检查 3x3 网格中的每个单元有何帮助?我强行尝试了x=0, y=0,offset=0和offset=1,但offset=1给出了int ox = 1%3 = 1;和int oy = 1/3,所以board[0 + 1][0+(1/3)] = board[1][1/3],单元格[1/3]代表什么等等?
【问题讨论】:
标签: java algorithm validation hashset sudoku