LEETCODE: Valid Sudoku

来源:互联网 发布:知乎的图标设计 编辑:程序博客网 时间:2024/06/07 22:06

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.

注意,只要判断横向、竖向、和小格子立面的,三个都判断一下就好了。


class Solution {public:    bool isValidSudoku(vector<vector<char> > &board) {        for(int ii = 0; ii < 9; ii ++) {            for(int jj = 0; jj < 9; jj ++) {                if(board[ii][jj] == '.') continue;                                map<char, int> mci;                                int starti = ii / 3;                starti *= 3;                int startj = jj / 3;                startj *= 3;                for(int si = 0; si < 3; si ++) {                    for(int sj = 0; sj < 3; sj ++) {                        if(board[starti + si][startj + sj] == '.') continue;                        mci[board[starti + si][startj + sj]] += 1;                        if(mci[board[starti + si][startj + sj]] > 1)                            return false;                    }                }                //check same ii                mci.clear();                for(int kk = 0; kk < 9; kk ++) {                    if(board[ii][kk] == '.') continue;                                        if(mci[board[ii][kk]] >= 1)                        return false;                                        mci[board[ii][kk]] += 1;                }                //check same jj                mci.clear();                for(int kk = 0; kk < 9; kk ++) {                    if(board[kk][jj] == '.') continue;                                        if(mci[board[kk][jj]] >= 1)                        return false;                                        mci[board[kk][jj]] += 1;                }                            }        }        return true;    }};






0 0
原创粉丝点击