传送门:https://leetcode.com/problems/valid-sudoku/
问题解析:这里的valid并不要求一定能解出来,只要满足每一横行、每一纵行、每一个方格内不存在相等的元素就可以。
单元方格很明显是以3为单位的,求出商和余数后遍历九次就可以。
AC代码:
class Solution
{
public:
bool check(int x,int y,vector<vector<char> >& board)
{
for(int i=0;i<9;i++)
if(i!=x && board[i][y]==board[x][y]) return false;
//check for the row
for(int i=0;i<9;i++)
if(i!=y && board[x][i]==board[x][y]) return false;
//check for the line
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(board[x/3*3+i][y/3*3+j]==board[x][y] && x!=x/3*3+i && y!=y/3*3+j)
return false;
//check for the unit
return true;
}
bool isValidSudoku(vector<vector<char> >& board)
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(board[i][j]=='.') continue;
if(!check(i,j,board)) return false;
}
}
return true;
}
};