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;
    }
}

运行结果

相关推荐
努力学算法的蒟蒻1 小时前
day61(1.20)——leetcode面试经典150
面试·职场和发展
带刺的坐椅1 小时前
Solon AI Skills 会是 Agent 的未来吗?
java·agent·langchain4j·solon-ai
夏鹏今天学习了吗1 小时前
【LeetCode热题100(87/100)】最小路径和
算法·leetcode·职场和发展
jacGJ1 小时前
记录学习--文件读写
java·前端·学习
花间相见1 小时前
【JAVA开发】—— Nginx服务器
java·开发语言·nginx
扶苏-su2 小时前
Java---Properties 类
java·开发语言
cypking2 小时前
四、CRUD操作指南
java
2301_780669863 小时前
文件字节流输出、文件复制、关闭流的方法
java
Lips6113 小时前
2026.1.20力扣刷题笔记
笔记·算法·leetcode
剑锋所指,所向披靡!4 小时前
C++之类模版
java·jvm·c++