很多题我都是按照暴力的思路去求解的,这个也是,写了五层循环自己心里也没有什么底气的样子哈哈
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
//判断横向和竖向
int br[10],bc[10];
for(int i=0;i<board.size();i++){
memset(br,0,sizeof(br));
memset(bc,0,sizeof(bc));
for(int j=0;j<board[i].size();j++){
if(board[i][j]>='0'&&board[i][j]<='9'){
br[board[i][j]-'0']++;
}
if(board[j][i]>='0'&&board[j][i]<='9'){
bc[board[j][i]-'0']++;
}
}
for(int k=0;k<10;k++){
if(br[k]>1||bc[k]>1){
return false;
}
}
}
//判断3*3的格子里是否有重合
int b[10];
for(int si=0;si<board.size();si=si+3){
for(int sj=0;sj<board[si].size();sj=sj+3){
memset(b,0,sizeof(b));
for(int i=si;i<si+3;i++){
for(int j=sj;j<sj+3;j++){
if(board[i][j]>='0'&&board[i][j]<='9'){
b[board[i][j]-'0']++;
}
}
}
for(int k=0;k<10;k++){
if(b[k]>1) return false;
}
}
}
return true;
}
};
京公网安备 11010502036488号