您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页LeetCode-36. 有效的数独-Java-medium

LeetCode-36. 有效的数独-Java-medium

来源:汇智旅游网

法一
    /**
     * 1. boolean数组的建立
     *   (1)第一个[]存放行/列/块
     *   (2)第二个[]存放相应数字
     *   (3)结合起来解释就是:第?行/列/块 是否 出现过相应数字
     * 2. blockIndex的规律
     *   (1)微观9x9 -> 宏观3x3
     *   (2)i/3为行号,j/3为列号
     *   (3)行号*列数+列号,即位置
     *
     * @param board
     * @return
     */
    public boolean isValidSudoku(char[][] board) {
        boolean[][] row = new boolean[9][10];
        boolean[][] col = new boolean[9][10];
        boolean[][] block = new boolean[9][10];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                if (board[i][j] != '.') {
                    int num = board[i][j] - '0';
                    int blockIndex = i / 3 * 3 + j / 3;
                    if (row[i][num] || col[j][num] || block[blockIndex][num]) {
                        return false;
                    } else {
                        row[i][num] = true;
                        col[j][num] = true;
                        block[blockIndex][num] = true;
                    }
                }
            }
        }
        return true;
    }
本地测试
        /**
         * 36. 有效的数独
         */
        lay.showTitle(36);
        Solution36 sol36 = new Solution36();
        char[][] board36 = {
             {'5','3','.','.','7','.','.','.','.'}
            ,{'6','.','.','1','9','5','.','.','.'}
            ,{'.','9','8','.','.','.','.','6','.'}
            ,{'8','.','.','.','6','.','.','.','3'}
            ,{'4','.','.','8','.','3','.','.','1'}
            ,{'7','.','.','.','2','.','.','.','6'}
            ,{'.','6','.','.','.','.','2','8','.'}
            ,{'.','.','.','4','1','9','.','.','5'}
            ,{'.','.','.','.','8','.','.','7','9'}
        };
        System.out.println(sol36.isValidSudoku(board36));

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务