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之路的主要内容,如果未能解决你的问题,请参考以下文章