逐行,逐列,每个小九宫格检查。
public class Solution { //Time: O(n^2) Space: O(n) public boolean isValidSudoku(char[][] board) { if (board == null || board.length == 0) { return false; } for (int i = 0; i < 9; i++) { boolean[] map = new boolean[10]; for (int j = 0; j < 9; j++) { if (board[i][j] != '.') { if (!map[board[i][j] - '0']) { map[board[i][j] - '0'] = true; } else { return false; } } } } for (int i = 0; i < 9; i++) { boolean[] map = new boolean[10]; for (int j = 0; j < 9; j++) { if (board[j][i] != '.') { if (!map[board[j][i] - '0']) { map[board[j][i] - '0'] = true; } else { return false; } } } } for (int i = 0; i < 9; i += 3) { for (int j = 0; j < 9; j += 3) { boolean[] map = new boolean[10]; for (int k = 0; k < 9; k++) { if (board[i + k / 3][j + k % 3] != '.') { if (!map[board[i + k / 3][j + k % 3] - '0']) { map[board[i + k / 3][j + k % 3] - '0'] = true; } else { return false; } } } } } return true; } }
No comments:
Post a Comment