根据题目,我们可以创造俩个二维数组与一个三维数组,分别存放每行,每列,以及每个小九宫格1~9出现的次数
rows[9][9]-------表示一个二维数组,第一个存放下标i(表示第i行),第二个存放index(记录0~9出现的次数)
以rows[9][9]为例:
index 0 1 2 3 4 5 6 7 8 9
i=1 0 0 1 0 1 0 1 0 0 0
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int rows[9][9];
int columns[9][9];
int subboxes[3][3][9];
memset(rows,0,sizeof(rows));
memset(columns,0,sizeof(columns));
memset(subboxes,0,sizeof(subboxes));
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
char c = board[i][j];
if(c!='.'){
int index = c-'0'-1;
rows[i][index]++;
columns[j][index]++;
subboxes[i/3][j/3][index]++;
if(rows[i][index]>1||columns[j][index]>1||subboxes[i/3][j/3][index]>1){
return false;
}
}
}
}
return true;
}
};