请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
用二维数组记录每行每列的元素出现个数,用三维数组记录每个小九宫格元素出现的个数
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int hang[9][9];
int lie[9][9];
int box[3][3][9];
memset(hang,0,sizeof(hang));
memset(lie,0,sizeof(lie));
memset(box,0,sizeof(box));
for(int i = 0;i<9;i++){
for(int j=0;j<9;j++){
char c = board[i][j];
if(c != '.'){
int n = c - '0' -1 ;
hang[i][n]++;
lie[j][n]++;
box[i/3][j/3][n]++;
if(hang[i][n]>1 || lie[j][n]>1 || box[i/3][j/3][n]>1)
{
return false;
}
}
}
}
return true;
}
};