题解 | #暮光数独验证#
暮光数独验证
https://www.nowcoder.com/practice/68dd2d15263f433db6ffa0405d08426a
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param board char字符型二维数组
* @return bool布尔型
*/
public boolean isValidTwilightSudoku (char[][] board) {
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;
}
}
知识点:
二维数组的遍历和判断、使用哈希集合来检查数独规则是否满足
解题分析:
- 使用两层循环遍历数独棋盘中的每个单元格:外层循环遍历行,内层循环遍历列。
- 对于每个单元格,我们获取其对应的数字
number。 - 如果
number不是空位(即不是'.'),则根据该数字所在的行、列和3x3网格构造三个字符串row、col和box,分别表示该数字所在的行、列和3x3网格。 - 判断
seen集合中是否已经存在row、col或box来确定数独规则是否满足。如果存在重复的字符串,说明数独规则不满足,直接返回false。 - 如果不存在重复的字符串,则将
row、col和box添加到seen集合中,表示已经出现过该行、列和3x3网格。 - 循环结束后,如果没有发现任何不满足数独规则的情况,则返回
true,表示数独规则全部满足。
编程语言:
Java
小天才公司福利 1254人发布
