判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
1.数字 1-9 在每一行只能出现一次。
2.数字 1-9 在每一列只能出现一次。
3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
数独部分空格内已填入了数字,空白格用 '.' 表示。
class Solution
{
public:
bool isValidSudoku(vector<vector<char>>& board)
{
for (int i = 0; i < 9; i++)
{
set <char> line;
set <char> col;
set <char> cube;
for (int j = 0; j < 9; j++)
{
if (board[i][j] != '.'&&!line.insert(board[i][j]).second)
{
return false;
}
if (board[j][i] != '.'&&!col.insert(board[j][i]).second)
{
return false;
}
int m = i / 3 * 3 + j / 3;
int n = i % 3 * 3 + j % 3;
if (board[m][n] != '.'&&!cube.insert(board[m][n]).second)
{
return false;
}
}
}
return true;
}
};