【题目描述】
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
注意:
一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
空白格用 '.' 表示。
【解答】
挨个判断条件(memset复健)
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
bool rows[9][9]={0};
bool columns[9][9]={0};
int sub[3][3][9]={0};
memset(rows,0,sizeof(rows));
memset(columns,0,sizeof(columns));
memset(sub,0,sizeof(sub));
for (int i=0; i<9; i++)
for (int j=0; j<9; j++)
if (board[i][j]!='.')
{
int c=board[i][j]-'1';
if (rows[i][c]) return false;
rows[i][c]=1;
if (columns[j][c]) return false;
columns[j][c]=1;
if (sub[i/3][j/3][c]) return false;
sub[i/3][j/3][c]=1;
}
return true;
}
};