import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param board char字符型二维数组 * @return bool布尔型 */ public boolean isValidTwilightSudoku (char[][] board) { // write code here HashSet<String> seen = new HashSet<>(); for (int i = 0; i < 9; ++i) { for (int j = 0; j < 9; ++j) { char number = board[i][j]; if (number != '.') { String row = "row " + i + number; String col = "col " + j + number; String box = "box " + i / 3 + '-' + j / 3 + number; if (seen.contains(row) || seen.contains(col) || seen.contains(box)) { return false; } seen.add(row); seen.add(col); seen.add(box); } } } return true; } }
编程语言是Java。
考察的是对二维数组的遍历和判断,以及使用哈希集合来检查数独规则是否满足。
具体代码的文字解释如下:
- 使用两层循环遍历数独棋盘中的每个单元格:外层循环遍历行,内层循环遍历列。
- 对于每个单元格,我们获取其对应的数字
number
。 - 如果
number
不是空位(即不是'.'),则根据该数字所在的行、列和3x3网格构造三个字符串row
、col
和box
,分别表示该数字所在的行、列和3x3网格。 - 判断
seen
集合中是否已经存在row
、col
或box
来确定数独规则是否满足。如果存在重复的字符串,说明数独规则不满足,直接返回false
。 - 如果不存在重复的字符串,则将
row
、col
和box
添加到seen
集合中,表示已经出现过该行、列和3x3网格。 - 循环结束后,如果没有发现任何不满足数独规则的情况,则返回
true
,表示数独规则全部满足。