Leetcode Valid Sudoku

本文介绍了一个简单的数独验证算法,通过遍历数独的每一行、每一列以及每一个九宫格来检查数字是否重复,从而判断数独是否合法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:检查数独是否合法,行列及九宫格的数字 不能重复。

思路:暴力检查。

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        bool isRepeat[10];
        
        for(int i = 0; i < board.size(); ++ i) {
            memset(isRepeat, 0, sizeof(bool) * 10);
            for(int j = 0; j < 9; ++ j) {
                if(board[i][j] != '.' && isRepeat[board[i][j] - '0']) return false;
                if(board[i][j] != '.') isRepeat[board[i][j] - '0'] = true;
            }
        }
        
        for(int i = 0; i < board.size(); ++ i) {
            memset(isRepeat, 0, sizeof(bool) * 10);
            for(int j = 0; j < 9; ++ j) {
                if(board[j][i] != '.' && isRepeat[board[j][i] - '0']) return false;
                if(board[j][i] != '.') isRepeat[board[j][i] - '0'] = true;
            }
        }
        
        for(int i = 0 ;i < 3; ++ i) {
            for(int j = 0; j < 3; ++ j) {
                memset(isRepeat, 0, sizeof(bool) * 10);
                for(int k = i * 3; k < i * 3 + 3; ++ k) {
                    for(int l = j * 3; l < j * 3 + 3; ++ l) {
                        if(board[k][l] != '.') {
                            if(isRepeat[board[k][l] - '0']) return false;
                            isRepeat[board[k][l]-'0'] = true;
                        }
                    }
                }
            }
        }
        
        return true;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值