36. Valid Sudoku
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
vector<int> col(9, 0);
vector<int> row(9, 0);
vector<vector<int> > block(3, vector<int>(3, 0));
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
if (board[i][j] != '.') {
int tmp = 1 << (board[i][j] - '0');
if ((row[i] & tmp) || (col[j] & tmp) || (block[i / 3][j / 3] & tmp))
return false;
row[i] |= tmp;
col[j] |= tmp;
block[i / 3][j / 3] |= tmp;
}
return true;
}
};
vector<vector<int> > block(3, vector<int>(3, 0));
新技能get