Leetcode 数独
1.验证数独
class Solution {
public:
int hash[9];
bool isValidSudoku(vector<vector<char> > &board)
{
for(int i=0;i<9;i++)
{
if(isvalidRow(i,board)==false)return false;
}
for(int i=0;i<9;i++)
{
if(isvalidCol(i,board)==false)return false;
}
for(int i=0;i<9;i=i+3)
{
for(int j=0;j<9;j=j+3)
if(isvalidMatrix(i,j,board)==false)return false;
}
return true;
}
bool isvalidRow(int a,vector<vector<char> > &board)
{
memset(hash,0,sizeof(hash));
for(int i=0;i<9;i++)
{
if(board[a][i]!='.')hash[board[a][i]-'0'-1]++;
}
for(int i=0;i<9;i++)
{
if(hash[i]>=2)return false;
}
return true;
}
bool isvalidCol(int a,vector<vector<char> > &board)
{
memset(hash,0,sizeof(hash));
for(int i=0;i<9;i++)
{
if(board[i][a]!='.')hash[board[i][a]-'0'-1]++;
}
for(int i=0;i<9;i++)
{
if(hash[i]>=2)return false;
}
return true;
}
bool isvalidMatrix(int a,int b,vector<vector<char> > &board)
{
memset(hash,0,sizeof(hash));
for(int i=a;i<a+3;i++)
{
for(int j=b;j<b+3;j++)
{
if(board[i][j]!='.')hash[board[i][j]-'0'-1]++;
}
}
for(int i=0;i<9;i++)
{
if(hash[i]>=2)return false;
}
return true;
}
};
浙公网安备 33010602011771号