方法:设置三个数组,两个二维一个三维,二维中的第一维存行和列第二维存数字(对应数字的下标为1),然后三维数组前二维分别是第几个3*3的元素,第三维存数字。由于数组元素为字符,因此需要减去'0'确保得到的值为数字。
class Solution { public: bool isValidSudoku(vector>& 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; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)