leetcode 36 有效的数独 / valid sudoku
程序员文章站
2022-05-12 09:25:01
...
题目描述:
题目还是比较简单的,没让你判断当前数独是否有解,只判断当前填的数是否符合规定就行。
解题思路:设置三个访问数组,分别代表行,列和块(3*3),初始时值全部置0,对于每个元素,第一次访问后就置1,在访问就说明数据重复了,直接 return false;代码如下:
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
int rows[9][9];
int cols[9][9];
int parts[3][3][9];
memset(rows,0,sizeof(rows));
memset(cols,0,sizeof(cols));
memset(parts,0,sizeof(parts));
int i,j,temp;
for(i = 0;i < 9;i++){
for(j = 0;j < 9;j++){
if(board[i][j] != '.'){
temp = board[i][j] - '1';//减1的目的是为了方便和数组对应
if(rows[i][temp] || cols[j][temp] || parts[i/3][j/3][temp]){
return false;
}
else {
rows[i][temp] = 1;
cols[j][temp] = 1;
parts[i/3][j/3][temp] = 1;
}
}
}
}
return true;
}
};
上一篇: 数据结构+算法连载四 单向链表