leetcode[36]Valid Sudoku

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.

#define NUM 9

class Solution {

public:

    bool isValidSudoku(vector<vector<char> > &board) {

    map<char,int> bmap;

    map<char,int> bmap1;

    map<char,int> bmap2;

    for (int i=0;i<NUM;i++)

    {

        bmap.clear();

        bmap1.clear();

        for (int j=0;j<NUM;j++)

        {

            if (board[i][j]!='.')

            {

                bmap[board[i][j]]++;

                if(bmap[board[i][j]]>1)return false;

            }

            if (board[j][i]!='.')

            {

                bmap1[board[j][i]]++;

                if (bmap1[board[j][i]]>1)return false;

            }

        }

    }

    for (int a=0;a<NUM;a+=3)

    {

        for (int b=0;b<NUM;b+=3)

        {

            bmap2.clear();

            for (int ii=a;ii<a+3;ii++)

            {

                for (int jj=b;jj<b+3;jj++)

                {

                    if (board[ii][jj]!='.')

                    {

                        bmap2[board[ii][jj]]++;

                        if (bmap2[board[ii][jj]]>1)return false;

                    }

                }

            }

        }

    }

    return true;

    }

};

 

你可能感兴趣的:(LeetCode)