leetcode 36 有效的數獨 / valid sudoku

題目描述:


題目還是比較簡單的,沒讓你判斷當前數獨是否有解,只判斷當前填的數是否符合規定就行。

解題思路:設置三個訪問數組,分別代表行,列和塊(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;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章