Valid Sudoku
Q: 九宫独。
判断一个board是否是有效的九宫独。用三个二维数组标记,row,col,block:row[i][j]表示第i行数字j+1是否已经出现过,col和block数组同理。
对于board[i][j],对应的block计算是:i - i%3+j/3
bool isValidSudoku(vector<vector<char> > &board) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = board.size();
if(n==0)
return true;
vector<vector<bool>> row(n,vector<bool>(n,false));
vector<vector<bool>> col(n,vector<bool>(n,false));
vector<vector<bool>> block(n,vector<bool>(n,false));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(board[i][j]=='.') continue;
int num = board[i][j] - '1';
if(row[i][num]||col[j][num]||block[i - i % 3 + j / 3][num])
return false;
row[i][num] = col[j][num] = block[i - i % 3 + j / 3][num] = true;
}
}
return true;
}
浙公网安备 33010602011771号