题目
见leetcode官网添加链接描述
思路
哈希表映射思想。
网格存在三个维度:行、列、宫格(3x3),要确保每个维度的数字都不会重复。
表格确定是9*9,不用担心内存占用过多,可以建立三个二维数组(哈希表),映射读取到的数字到每个维度的相应位置即可。同一位置多次映射,即返回false。
c++代码
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int row[9][10] = { 0 }; //行
int col[9][10] = { 0 }; //列
int box[9][10] = { 0 }; //宫格
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (board[i][j] == '.') continue;
int num = board[i][j] - '0';
if (row[i][num] == 1||col[j][num]==1||box[(i/3)*3+j/3][num]==1)
return false;
else {
row[i][num] = 1;
col[j][num] = 1;
box[(i / 3) * 3 + j / 3][num] = 1;
}
}
}
return true;
}
};
END