class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
//每一行
for(int i=0;i<9;++i)
{
bool s[9];
for(int j=0;j<9;++j)
s[j] = false;
for(int j=0;j<9;++j)
{
if(board[i][j]=='.')
continue;
if(s[board[i][j]-'1']==true)
return false;
s[board[i][j]-'1'] = true;
}
}
//每一列
for(int i=0;i<9;++i)
{
bool s[9];
for(int j=0;j<9;++j)
s[j] = false;
for(int j=0;j<9;++j)
{
if(board[j][i]=='.')
continue;
if(s[board[j][i]-'1']==true)
return false;
s[board[j][i]-'1'] = true;
}
}
//每一小格
char point[9][2] = {{1,1},{1,4},{1,7},{4,1},{4,4},{4,7},{7,1},{7,4},{7,7}};
char dir[9][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,0},{0,1},{1,-1},{1,0},{1,1}};
for(int i=0;i<9;++i)
{
bool s[9];
for(int j=0;j<9;++j)
s[j] = false;
for(int j=0;j<9;++j)
{
char x = point[i][0] + dir[j][0];
char y = point[i][1] + dir[j][1];
if(board[x][y]=='.')
continue;
if(s[board[x][y]-'1']==true)
return false;
s[board[x][y]-'1'] = true;
}
}
return true;
}
};
36 Valid Sudoku
最新推荐文章于 2021-03-02 12:20:25 发布