LeetCode刷题 36 有效的数独

 

 思路:模拟

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        int a[10];
        for(int i = 0; i < board.size(); ++i) {
            memset(a, 0, sizeof a);
            for(int j = 0; j < board[0].size(); ++j) {
                if(board[i][j] != '.') {
                    a[board[i][j] - '0']++;
                    if(a[board[i][j] - '0'] > 1) {
                        return false;
                    }
                }
            }
        }
        for(int i = 0; i < board.size(); ++i) {
            memset(a, 0, sizeof a);
            for(int j = 0; j < board[0].size(); ++j) {
                if(board[j][i] != '.') {
                    a[board[j][i] - '0']++;
                    if(a[board[j][i] - '0'] > 1) {
                        return false;
                    }
                }
            }
        }
        for(int k = 0; k < 9; k += 3) {
            for(int m = 0; m < 9; m += 3) {
                memset(a, 0, sizeof a);
                for(int i = k; i < k + 3; ++i) {
                    for(int j = m; j < m + 3; ++j) {
                        if(board[j][i] != '.') {
                            a[board[j][i] - '0']++;
                            if(a[board[j][i] - '0'] > 1) {
                                return false;
                            }
                        }
                    }
                }
            }
        }
        return true;
    }
};
作者:LightAc
出处:https://www.cnblogs.com/lightac/
联系:
Email: dzz@stu.ouc.edu.cn
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/lightac/p/12716124.html