0
点赞
收藏
分享

微信扫一扫

LeetCode 36. 有效的数独

舍予兄 2022-01-24 阅读 84

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        bool st[9];
        //判断行
        for(int i=0;i<9;i++){
            memset(st,0,sizeof st);
            for(int j=0;j<9;j++){
                if(board[i][j]!='.'){
                    int t=board[i][j]-'1';
                    if(st[t])return false;
                    st[t]=true;
                }
            }
        }
        //判断列
        for(int j=0;j<9;j++){
            memset(st,0,sizeof st);
            for(int i=0;i<9;i++){
                if(board[i][j]!='.'){
                    int t=board[i][j]-'1';
                    if(st[t])return false;
                    st[t]=true;
                }
            }
        }
        //判断九宫格
        for(int i=0;i<9;i+=3){
            for(int j=0;j<9;j+=3){  //两层循环i,j遍历每个九宫格左上角的点
                memset(st,0,sizeof st);
                for(int x=0;x<3;x++){
                    for(int y=0;y<3;y++){
                        if(board[i+x][j+y]!='.'){
                            int t=board[i+x][j+y]-'1';
                            if(st[t])return false;
                            st[t]=true;
                        }
                    }
                }
            }
        }
        return true;
    }
};
//模拟
//暴搜
举报

相关推荐

0 条评论