Valid Sudoku

来源:互联网 发布:简单的淘宝昵称大全 编辑:程序博客网 时间:2024/06/18 15:54

论看懂题目的重要性!!!这道题目实际是要求判断给出的数独是否是有效数独(每行每列及每个小九宫格都没有重复数字),而不是填充数独!没有看清题目的人绞尽脑汁地在纸上把数独填满了,又绞尽脑汁地想着怎样用代码实现,结果知道真相后,只能绞尽脑汁地骂自己。。。再见












//分别对行,列,以及九宫格进行判断,确认是否每行、每列以及每个小九宫格都没有出现重复的数,是则返回truepublic class Solution {public boolean isValidSudoku(char[][] board) {        int i;        int j;        char p;        for (i = 0; i < 9; i ++){ //行判断        int a[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};        for (j = 0; j < 9; j ++){        p = board[i][j];        if (p != '.'){        if (a[p - '1'] == 0){        a[p - '1'] = 1;        }        else{        return false;        }        }        }        }        for (i = 0; i < 9; i ++){  //列判断        int a[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};        for (j = 0; j < 9; j ++){        p = board[j][i];        if (p != '.'){        if (a[p - '1'] == 0){        a[p - '1'] = 1;        }        else{        return false;        }        }        }        }        int row;        int col;        int r;        int c;        for (i = 0; i < 9; i ++){        row = i / 3 * 3;         col = i % 3 * 3;        int a[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};        for (r = row; r < (row + 3); r ++){        for (c = col; c < (col + 3); c ++){        p = board[r][c];            if (p != '.'){            if (a[p - '1'] == 0){            a[p - '1'] = 1;            }            else{            return false;            }            }            }        }        }        return true;        }}


0 0