Leetcode面试经典150题-36.有效数独

解法都在代码里,不懂就留言或者私信,比第一题稍微难点

java 复制代码
class Solution {
    public static boolean isValidSudoku(char[][] board) {
        /**rowExists[i][j]代表第i行是否存在数据j+1*/
        boolean[][] rowExists = new boolean[9][9];
        /**rowExists[i][j]代表第i列是否存在数据j+1*/
        boolean[][] colExists = new boolean[9][9];
        /**rowExists[i][j]代表第i个格子是否存在数据j+1*/
        boolean[][] bucketExists = new boolean[9][9];
        for(int i = 0; i < board.length; i++) {
            for(int j = 0; j < board[i].length; j++) {
                if(board[i][j] == '.') {
                    continue;
                }
                /**如果这个行已经存在这个数字了,返回false*/
                if(rowExists[i][board[i][j] - '1']) {
                    return false;
                }
                /**如果原来没有,现在这个数就是,有了记录一下*/
                rowExists[i][board[i][j]-'1'] = true;
                /**如果这个列已经存在这个数字了,返回false*/
                if(colExists[j][board[i][j]-'1']) {
                    return false;
                }
                /**如果原来没有,现在这个数就是,有了记录一下*/
                colExists[j][board[i][j]-'1'] = true;
                /**计算当前应该在哪个桶,这里注意bucketnum的计算*/
                int bucketNum = j / 3 + (i / 3)*3;
                if(bucketExists[bucketNum][board[i][j]-'1']) {
                    return false;
                }
                bucketExists[bucketNum][board[i][j]-'1'] = true;
            }
        }
        return true;
    }
}

运行结果

相关推荐
乌日尼乐11 分钟前
【Java】IO流完全指南
java·后端
zhaokuner35 分钟前
14-有界上下文-DDD领域驱动设计
java·开发语言·设计模式·架构
信码由缰39 分钟前
停止编写Excel规格文档:企业级Java开发的Markdown先行方法
java·ai编程·markdown
k***921642 分钟前
【c++】多态
java·开发语言·c++
西敏寺的乐章1 小时前
ThreadLocal / InheritableThreadLocal / TransmittableThreadLocal(TTL)学习总结
java·开发语言·网络
小毅&Nora1 小时前
【Java线程安全实战】⑤ 原子类(Atomic)深度解析:无锁编程(Lock-Free)的终极奥义(增强版)
java·多线程·原子操作
深盾科技1 小时前
C++ 中 std::error_code 的应用与实践
java·前端·c++
多米Domi0111 小时前
0x3f 第20天 三更24-32 hot100子串
java·python·算法·leetcode·动态规划
人道领域1 小时前
【零基础学java】(不可变集合)
java
阿拉伯柠檬1 小时前
传输层协议TCP(二)
linux·服务器·网络·网络协议·tcp/ip·面试