判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-sudoku
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
使用三个不同的循环进行重复性检测。
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
//row check
for(int i=0;i<9;i++){
set<int> check;
for(int j=0;j<9;j++){
if(board[i][j]!='.'){
if(check.find(board[i][j])!=check.end()){
return false;
}else{
check.insert(board[i][j]);
}
}
}
}
//column check
for(int i=0;i<9;i++){
set<int> check;
for(int j=0;j<9;j++){
if(board[j][i]!='.'){
if(check.find(board[j][i])!=check.end()){
return false;
}else{
check.insert(board[j][i]);
}
}
}
}
//column check
for(int i=0;i<9;i+=3){
for(int j=0;j<9;j+=3){
set<int> check;
for(int k=0;k<3;k++){
for(int l=0;l<3;l++){
if(board[i+k][j+l]!='.'){
if(check.find(board[i+k][j+l])!=check.end()){
return false;
}else{
check.insert(board[i+k][j+l]);
}
}
}
}
}
}
return true;
}
};