LeetCode 36 有效的数独[数组] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 36 有效的数独[数组] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。



解题思路:
解题关键在于访问数组的定义,全部定义成二维数组(9 * 9),即使意义不同,在遍历的时候注意就行,接着逐行遍历,当遍历到的数不为空,获取该数,并观察该数所处的行、列、小九宫格是否有重复(小九宫格的索引需要计算),有返回false,无则更新访问数组,遍历完成返回true,代码如下:

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        // 记录行是否重复
        vector<vector<bool>> row(9, vector<bool>(9, false));
        // 记录列是否重复
        vector<vector<bool>> col(9, vector<bool>(9, false));
        // 记录小九宫格是否重复
        vector<vector<bool>> grid(9, vector<bool>(9, false));
        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 index = i / 3 * 3 + j / 3;
                    if(row[i][num - 1] || col[j][num - 1] || grid[index][num - 1]) {
                        return false;
                    } else {
                        row[i][num - 1] = true;
                        col[j][num - 1] = true;
                        grid[index][num - 1] = true;
                    }
                }
            }
        }
        return true;
    }
};


/*作者:heroding
链接:https://leetcode-cn.com/problems/valid-sudoku/solution/cyi-ci-bian-li-by-heroding-fepl/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/

以上是关于LeetCode 36 有效的数独[数组] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-36-有效的数独

leetcode 36. 有效的数独

LeetCode 36 有效的数独[数组] HERODING的LeetCode之路

leetcode中等36有效的数独

Leetcode中等36. 有效的数独JavaScript

[JavaScript 刷题] 矩阵 - 有效的数独, leetcode 36