一次遍历

  • boolean[ ][ ] row = new boolean[9][10];
    • row[3][7] 表示第三行是否出现过7
  • boolean[ ][ ] col = new boolean[9][10];
    • col[3][7] 表示第三列是否出现过7
  • boolean[ ][ ] bucket = new boolean[9][10];
    • bucket[3][7] 表示第4个九宫二是否出现过7
  1. public boolean rowsValrowdSudoku(char[][] board) {
  2. boolean[][] row = new boolean[9][10];
  3. boolean[][] col = new boolean[9][10];
  4. boolean[][] bucket = new boolean[9][10];
  5. for (int i = 0; i < 9; i++) {
  6. for (int j = 0; j < 9; j++) {
  7. // 怎么定位第几个九宫格
  8. int bid = (i / 3) * 3 + (j / 3);
  9. if (board[i][j] != '.') {
  10. int num = board[i][j] - '0';
  11. if (row[i][num] || col[j][num] || bucket[bid][num]) {
  12. return false;
  13. }
  14. row[i][num] = true;
  15. col[j][num] = true;
  16. bucket[bid][num] = true;
  17. }
  18. }
  19. }
  20. return true;
  21. }