Leetcode Valid Sudoku

OpenSoucre發表於2014-07-07

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

A partially filled sudoku which is valid.

 

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

玩過九宮格的都應該知道規則(沒玩過的可以試玩一下九宮格

(1)每行1~9各出現一次

(2)每列1~9各出現一次

(3)每個小的3宮格,1~9各出現一次

class Solution {
public:

    bool isValidRow(vector<vector<char> >& board){
        for(int row = 0; row < 9; ++ row){
            vector<int> cnt(10,0);
            for(int col = 0; col < 9; ++ col){
                char item = board[row][col];
                if(item != '.'){
                    if(cnt[item-'0']!=0) return false;
                    else cnt[item-'0']++;
                }
            }
        }
        return true;
    }
    
    bool isValidCol(vector<vector<char> >& board ){
        for(int col = 0; col < 9; ++ col){
            vector<int> cnt(10,0);
            for(int row = 0; row < 9; ++ row){
                char item = board[row][col];
                if(item != '.'){
                    if(cnt[item-'0']!=0) return false;
                    else cnt[item-'0']++;
                }
            }
        }
        return true;
    }
    
    bool isValidBox(vector<vector<char> >& board){
        for(int i = 0 ; i < 3; ++ i){
            for(int j = 0 ; j < 3; ++ j){
                vector<int> cnt(10,0);
                for(int row = 3*i;row < 3*i+3; ++row){
                    for(int col = 3*j; col < 3*j+3; ++col){
                        char item = board[row][col];
                        if(item != '.'){
                            if(cnt[item-'0']!=0) return false;
                            else cnt[item-'0']++;
                        }
                    }
                }
            }
        }
        return true;
    }

    bool isValidSudoku(vector<vector<char> > &board) {
        return isValidRow(board)&&isValidCol(board)&&isValidBox(board);
    }
};

 

相關文章