有效的数独

题目描述:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

数字 1-9 在每一行只能出现一次。

数字 1-9 在每一列只能出现一次。

数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次

。数独部分空格内已填入了数字,空白格用 '.' 表示。


上图是一个部分填充的有效数独

示例:输入:

[

  ["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"]

]

输出: true

java代码

class Solution {

    public boolean isValidSudoku(char[][] board) {

        HashMap<Integer,Integer>[] rows = new HashMap[9];

        HashMap<Integer,Integer>[] columns = new HashMap[9];

        HashMap<Integer,Integer>[] boxes = new HashMap[9];

        for(int i=0;i<9;i++) {

            rows[i] = new HashMap<Integer,Integer>();

            columns[i] = new HashMap<Integer,Integer>();

            boxes[i] = new HashMap<Integer,Integer>();

        }

        for(int i=0;i<9;i++) {

            for(int j=0;j<9;j++) {

                char num = board[i][j];

                if(num != '.') {

                    int n = (int)num;

                    int box_index = (i / 3) * 3 + j / 3;

                    rows[i].put(n,rows[i].getOrDefault(n,0)+1);

                    columns[j].put(n,columns[j].getOrDefault(n,0)+1);

                    boxes[box_index].put(n,boxes[box_index].getOrDefault(n,0)+1);

                    if(rows[i].get(n) > 1 || columns[j].get(n) > 1 || boxes[box_index].get(n) > 1) {

                        return false;

                    }

                }

            }

        }

        return true;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 9,314评论 3 52
  • 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能...
    程序员生涯阅读 173评论 0 0
  • 一、题目 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在...
    Mage阅读 883评论 0 0
  • 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能...
    尼小摩阅读 492评论 0 0
  • 网上找了很多方法都不太靠谱,有问题,自己改了改,亲试可以 在比较版本号时,正确的做法应该是,主版本号和主版本号比较...
    runner123阅读 11,543评论 7 19