36. Valid Sudoku
Description
描述:https://leetcode.com/problems/valid-sudoku/description/
题意:检查数独(未解答之前)是否有效
Solution: (Java)
class Solution {
public boolean isValidSudoku(char[][] board) {
int[][] row = new int[9][10];
int[][] column = new int[9][10];
int[][][] box = new int[3][3][10];
int num;
for (int i = 0; i < 9; i++) {
for (int j = i; j < 9; j++) {
if (board[i][j] != '.') {
num = board[i][j] - '0';
if (row[i][num] == 0 && column[j][num] == 0 && box[i/3][j/3][num] == 0) {
row[i][num] = 1;
column[j][num] = 1;
box[i/3][j/3][num] = 1;
} else
return false;
}
}
for (int k = i+1; k < 9; k++) {
if (board[k][i] != '.') {
num = board[k][i] - '0';
if (row[k][num] == 0 && column[i][num] == 0 && box[k/3][i/3][num] == 0) {
row[k][num] = 1;
column[i][num] = 1;
box[k/3][i/3][num] = 1;
} else
return false;
}
}
}
return true;
}
}
思路
- 采取横向纵向同时遍历的方法,每个格子只遍历一次;
- 根据棋盘无效的三个条件来做判断即可。