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; }