leetcide Valid Sudoku

来源:互联网 发布:美国软件中国代理 编辑:程序博客网 时间:2024/06/09 18:18

题目:https://oj.leetcode.com/problems/valid-sudoku/

题意:判断一个数独是否是正确的,这也是后面解数独题的一个部分,如果是格子里是“.”直接跳到下一次循环

思路:3个判断+1个大的二维数组循环

将整个二维数组循环一遍,每一个格子做三个判断,行,列,小格子

用三个二维数组去记录这三个判断的结果,比如bool row[9][9];这个记录行的,比如row[1][5],代表第一行里有没有5这个数,有true,没有false,以此类推另外两个记录数组,col和sub

注意判断小格子时,看这个数属于第几小格子是要试一下的。。。。


class Solution {public:    bool isValidSudoku(vector<vector<char> > &board) {        bool rows[9][9];<span style="white-space:pre"></span>//记录行里每个元素出现过的情况 下面类似        bool cols[9][9];        bool sub[9][9];        for(int i=0;i<9;i++){            for(int j=0;j<9;j++){                rows[i][j]=false;                cols[i][j]=false;                sub[i][j]=false;            }        }        for(int i = 0;i<9;i++){            for(int j = 0;j<9;j++){                int one = board[i][j] - '1';                if (board[i][j] == '.') continue;                if(rows[i][one]||cols[j][one]||sub[i/3*3 + j/3][one])                    return false;                else rows[i][one]=cols[j][one]=sub[i/3*3 + j/3][one]=true;<span style="white-space:pre"></span>//注意判断小格子的方法            }        }        return true;    }};


0 0