public class SudokuVerifier { private boolean is1To9Row(int[][] a, int r) { int[] pos = new int[9]; for (int i = 0; i < 9; i++) { if (pos[a[r][i]] == 1) return false; pos[a[r][i]] = 1; } for (int i : pos) { if (i == 0) return false; } return true; } private boolean is1To9Column(int[][] a, int c) { int[] pos = new int[9]; for (int i = 0; i < 9; i++) { if (pos[a[i][c]] == 1) return false; pos[a[i][c]] = 1; } for (int i : pos) { if (i == 0) return false; } return true; } private boolean is1To9Sec(int[][] a, int x, int y) { int[] pos = new int[9]; for (int i = 0 ; i < 3 ; i ++) { for (int j = 0 ; j < 3 ; j ++) { if (pos[a[x + i][x + j]] == 1) return false; pos[a[x + i][x + j]] = 1; } } for (int i : pos) { if (i == 0) return false; } return true; } // O(n) private boolean isValid(int[][] a) { // Assumes... for (int i = 0 ; i < 9 ; i ++) { // Rows if (!is1To9Row(a, i)) return false; // Columns if (!is1To9Column(a, i)) return false; } // Secs for (int i = 0 ; i < 9 ; i += 3) { for (int j = 0 ; j < 9 ; j += 3) { if (!is1To9Sec(a, i, j)) return false; } } return true; } }
时间: 2024-11-07 01:31:33