class Solution {
public:
bool isLineOk(vector<char> &board){
//1到9,没有重复
map<char,int> roman;
roman['1']=0;
roman['2']=0;
roman['3']=0;
roman['4']=0;
roman['5']=0;
roman['6']=0;
roman['7']=0;
roman['8']=0;
roman['9']=0;
for (int i = 0; i < board.size(); i++)
{
if(board[i]>='1'&&board[i]<='9'){
if (roman[board[i]]==1)
return false;
roman[board[i]]++;
}
else if(board[i]!='.'){
return false;
}
}
return true;
}
bool isValidSudoku(vector<vector<char> > &board) {
int size=board.size();
//行
for (int i=0;i<size;i++)
{
if(!isLineOk(board[i]))
return false;
}
//列
for (int i=0;i<size;i++)
{
vector<char> tmp;
for (int j=0;j<size;j++)
{
tmp.push_back(board[j].at(i));
}
if(!isLineOk(tmp))
return false;
tmp.clear();
}
//方格
int A[]={0,3,6};
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
{
//行A[i] 列A[j] 初始位置
vector<char> tmp;
for (int m=0;m<3;m++)
{
for (int n=0;n<3;n++)
{
tmp.push_back(board[A[i]+m].at(A[j]+n));
}
}
if(!isLineOk(tmp))
return false;
tmp.clear();
}
}
return true;
}
};
Valid Sudoku
最新推荐文章于 2021-03-02 12:20:25 发布