【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题意:
一个数独里面,有的格子已经存在了数组,有的格子没有被填,对于给定的数独,判断这个数独是否成立
思路:
数独成立的条件:
1.同一行里,1~9只出现一次
2.同一列里,1~9只出现一次
3.同一个九宫格里,1~9只出现一次
class Solution
{
public:
bool isValidSudoku(vector<vector<char>>& board)
{
int n = board.size();
int m = board[0].size();
int i,j,k;
map<int,int> nums;
//同一行的判断
for(i = 0; i<n; i++)
{
nums.clear();
for(j = 0; j<m; j++)
{
if(board[i][j]>='1'&&board[i][j]<='9')
{
int r = board[i][j]-'0';
if(nums[r]) return 0;
nums[r] = 1;
}
}
}
//同一列的判断
for(j = 0; j<m; j++)
{
nums.clear();
for(i = 0; i<n; i++)
{
if(board[i][j]>='1'&&board[i][j]<='9')
{
int r = board[i][j]-'0';
if(nums[r]) return 0;
nums[r] = 1;
}
}
}
//同一九宫格内的判断
for(i = 0; i<n; i+=3)
{
for(j = 0; j<m; j+=3)
{
nums.clear();
for(int x = i; x<i+3; x++)
{
for(k = j; k<j+3; k++)
{
if(board[x][k]>='1'&&board[x][k]<='9')
{
int r = board[x][k]-'0';
if(nums[r]) return 0;
nums[r] = 1;
}
}
}
}
}
return 1;
}
};