思路简单直接,直接上C++代码
class Solution
{
public:
bool isValidSudoku(vector<vector<char>>& board)
{
for (int i = 0; i < 9; i++) //每一行中不能有重复
{
unordered_set<char> used_chars;
for (int j = 0; j < 9; j++)
{
char ch = board[i][j];
if(ch == '.') continue;
if (used_chars.find(ch) != used_chars.end()) //能找到!
return false;
else
used_chars.insert(ch);
}
}
for (int j = 0; j < 9; j++) //每一列中不能有重复
{
unordered_set<char> used_chars;
for (int i = 0; i < 9; i++)
{
char ch = board[i][j];
if(ch == '.') continue;
if (used_chars.find(ch) != used_chars.end()) //能找到!
return false;
else
used_chars.insert(ch);
}
}
for(int R=0; R<3; R++) //每一个以粗实线分隔的 3x3 宫内不能有重复
{
for(int C=0; C<3; C++)
{
unordered_set<char> used_chars;
for(int i = 3 * R; i < 3 * R + 3; i++)
{
for (int j = 3 * C; j < 3 * C + 3; j++)
{
char ch = board[i][j];
if(ch == '.') continue;
if (used_chars.find(ch) != used_chars.end()) //能找到!
return false;
else
used_chars.insert(ch);
}
}
}
}
return true;
}
};
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!