題目描述:
題目還是比較簡單的,沒讓你判斷當前數獨是否有解,只判斷當前填的數是否符合規定就行。
解題思路:設置三個訪問數組,分別代表行,列和塊(3*3),初始時值全部置0,對於每個元素,第一次訪問後就置1,在訪問就說明數據重複了,直接 return false;代碼如下:
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int rows[9][9];
int cols[9][9];
int parts[3][3][9];
memset(rows,0,sizeof(rows));
memset(cols,0,sizeof(cols));
memset(parts,0,sizeof(parts));
int i,j,temp;
for(i = 0;i < 9;i++){
for(j = 0;j < 9;j++){
if(board[i][j] != '.'){
temp = board[i][j] - '1';//減1的目的是爲了方便和數組對應
if(rows[i][temp] || cols[j][temp] || parts[i/3][j/3][temp]){
return false;
}
else {
rows[i][temp] = 1;
cols[j][temp] = 1;
parts[i/3][j/3][temp] = 1;
}
}
}
}
return true;
}
};