LEETCODE 36. Valid Sudoku

題目大意

給出一個9*9的二維表格:
這裏寫圖片描述
判斷這個表格是不是有效的數獨表格。

解題思路

一種解法:
用一個9維數組,存放每個數字是不是出現過,按列、行、小格遍歷
另一種解法:
分別用三個數組,第一個數組放着某個數字在某一列是否出現過;第二個數組放着某個數字在某一行是否出現過;第三個數組放着某個數字在某一小格是否出現過。
第二種解法需要遍歷表格一次而已,而第一種解法則需要遍歷表格兩次。實現第二種解法。

代碼

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        bool checkCol[9][9] = {false}, checkRow[9][9] = {false}, checkBlock[9][9] = {false;
        for (int i = 0; i < board.size(); i++) {
            for (int j = 0; j < board[i].size(); j++) {
                if (board[i][j] != '.') {
                    if (checkCol[i][board[i][j] - '1'] || checkRow[j][board[i][j] - '1'] || checkBlock[i / 3 * 3 + j / 3][board[i][j] - '1']) {
                        return false;
                    }
                    checkCol[i][board[i][j] - '1'] = true;
                    checkRow[j][board[i][j] - '1'] = true;
                    checkBlock[i / 3 * 3 + j / 3][board[i][j] - '1'] = true;
                }
            }
        }
        return true;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章