36. 有效的数独--遍历

36. 有效的数独 - 力扣(LeetCode)

image.png


class Solution {
    public boolean isValidSudoku(char[][] board) {
        int[][] rows = new int[9][9];
        int[][] columns = new int[9][9];
        int[][][] subboxes = new int[3][3][9];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                char c = board[i][j];
                if (c != '.') {
字符化为下标,例如:c= '2',index = '2'- '0' - 1 = 1
                    int index = c - '0' - 1;
第i行,下标为index的个数
                    rows[i][index]++;
第j列,下标为index的个数
                    columns[j][index]++;
九宫格中,第[i / 3][j / 3]个小九宫格,下标为index的个数,
例如i=5,j=1, 即i/3=1,j/3=0, subboxes[1][0][index]
                    subboxes[i / 3][j / 3][index]++;
                    if (rows[i][index] > 1 || columns[j][index] > 1 || subboxes[i / 3][j / 3][index] > 1) {
                        return false;
                    }
                }
            }
        }
        return true;
    }
}
复杂度分析

时间复杂度:O(1)。数独共有 81 个单元格,只需要对每个单元格遍历一次即可。

空间复杂度:O(1)。由于数独的大小固定,因此哈希表的空间也是固定的。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容