模拟
方法1
public boolean isValidSudoku(char[][] board) {
int R = board.length, C = board[0].length;
int[] rows = new int[R + 1], cols = new int[C + 1], blocks = new int[10];
for (int r = 0; r < R; r++) {
for (int c = 0; c < C; c++) {
char cur = board[r][c];
if (cur == '.') continue;
int t = cur - '0';
int idx = r / 3 * 3 + c / 3;
if (((rows[r] >> t) & 1) == 1 || ((cols[c] >> t) & 1) == 1 || ((blocks[idx] >> t) & 1) == 1)
return false;
rows[r] |= (1 << t);
cols[c] |= (1 << t);
blocks[idx] |= (1 << t);
}
}
return true;
}方法2
方法1:模拟+库函数
方法2:翻转点
方法3:一行

方法1
方法2
方法3
方法4
Last updated