use three 2-d matrix to store if any column, row or block has more than one specific value.
1 public class Solution { 2 public boolean isValidSudoku(char[][] board) { 3 // IMPORTANT: Please reset any member data you declared, as 4 // the same Solution instance will be reused for each test case. 5 boolean[][] rows = new boolean[9][9]; 6 boolean[][] cols = new boolean[9][9]; 7 boolean[][] blocks = new boolean[9][9]; 8 9 for (int i = 0; i < 9; ++i) { 10 for (int j = 0; j < 9; ++j) { 11 if (board[i][j] == '.') continue; 12 int c = board[i][j] - '1'; 13 if (rows[i][c] || cols[j][c] || blocks[i - i % 3 + j / 3][c]) 14 return false; 15 rows[i][c] = cols[j][c] = blocks[i - i % 3 + j / 3][c] = true; 16 } 17 } 18 return true; 19 } 20 }