Leetcode 题目解析之 Valid Sudoku
【摘要】 Leetcode 题目解析之 Valid Sudoku
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.
分别检查行、列、3*3方块。
public boolean isValidSudoku(char[][] board) {
if (board == null || board.length != 9 || board[0].length != 9) {
return false;
}
int mx = board.length;
int my = board[0].length;
// row
for (int x = 0; x < mx; x++) {
boolean[] flag = new boolean[10];
for (int y = 0; y < my; y++) {
char c = board[x][y];
if (c != '.') {
if (flag[c - '0'] == false) {
flag[c - '0'] = true;
} else {
return false;
}
}
}
}
// column
for (int y = 0; y < my; y++) {
boolean[] flag = new boolean[10];
for (int x = 0; x < mx; x++) {
char c = board[x][y];
if (c != '.') {
if (flag[c - '0'] == false) {
flag[c - '0'] = true;
} else {
return false;
}
}
}
}
// square
for (int x = 0; x < mx / 3; x++) {
for (int y = 0; y < my / 3; y++) {
boolean[] flag = new boolean[10];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
char c = board[x * 3 + i][y * 3 + j];
if (c != '.') {
if (flag[c - '0'] == false) {
flag[c - '0'] = true;
} else {
return false;
}
}
}
}
}
}
return true;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)