Determine if a 9x9 Sudoku board is valid (no repeats)
Boolean matrices to store seen values. Check rows, cols, 3x3 sub-boxes
Time: O(cnt^2)
Space: O(cnt^2)
*/
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
const int cnt = 9;
bool row[cnt][cnt] = {false};
bool col[cnt][cnt] = {false};
bool sub[cnt][cnt] = {false};
for(int r = 0; r < cnt; ++r){
for(int c = 0; c < cnt; ++c){
if(board[r][c] == '.')
continue;
int idx = board[r][c] - '0' - 1;
int area = (r/3) * 3 + (c/3);
if(row[r][idx] || col[c][idx] || sub[area][idx]){
return false;
}
row[r][idx] = true;
col[c][idx] = true;
sub[area][idx] = true;
}
}
return true;
}
};