题目链接:https://leetcode-cn.com/problems/valid-sudoku/
题目如下:
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
//tip:
//1、记录出现元素,用set
//2、需要记录元素及用到这个元素,用map
//3、判断set中是否包含某个元素,可以使用row.count(board[i][j])
//4、清空set中的元素,square1.clear();
set<char> square1;
set<char> square2;
set<char> square3;
for(int i=0;i<board.size();i++){
set<char> row;
set<char> col;
for(int j=0;j<board[0].size();j++){
if(board[i][j]!='.'){//row
if(row.count(board[i][j])) return false;
else row.insert(board[i][j]);
}
if(board[j][i]!='.'){//col
if(col.count(board[j][i])) return false;
else col.insert(board[j][i]);
}
if(j/3==0&&board[i][j]!='.'){//each row的第一个square
if(square1.count(board[i][j])) return false;
else square1.insert(board[i][j]);
}
else if(j/3==1&&board[i][j]!='.'){//each row的第二个square
if(square2.count(board[i][j])) return false;
else square2.insert(board[i][j]);
}
else if(j/3==2&&board[i][j]!='.'){//each row的第三个square
if(square3.count(board[i][j])) return false;
else square3.insert(board[i][j]);
}
}
if((i+1)%3==0){
square1.clear();
square2.clear();
square3.clear();
}
}
return true;
}
};