方法:设置三个数组,两个二维一个三维,二维中的第一维存行和列第二维存数字(对应数字的下标为1),然后三维数组前二维分别是第几个3*3的元素,第三维存数字。由于数组元素为字符,因此需要减去'0'确保得到的值为数字。
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int row[9][9];
int col[9][9];
int array[3][3][9];
memset(row,0,sizeof(row));
memset(col,0,sizeof(col));
memset(array,0,sizeof(array));
for(int i =0;i<9;i++)
{
for(int j = 0;j<9;j++)
{
if(board[i][j]!='.')
{
char index = board[i][j]-'0'-1;
row[i][index]++;
col[j][index]++;
array[i/3][j/3][index]++;
if(row[i][index]>1||col[j][index]>1||array[i/3][j/3][index]>1)
return false;
}
}
}
return true;
}
};