您的位置:首页 > 其它

【leetcode】36. Valid Sudoku

2015-10-07 14:18 183 查看
首先分成9个3*3的格子,判断是否格子内的数是否唯一。

然后判断9*9的整体,每行每列的数是否唯一。

class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
bool mark[10];
for(int i = 0; i < 3; i ++)
for(int j = 0; j < 3; j ++) {
memset(mark, false, sizeof(mark));
for(int p = 0; p < 3; p ++) {
for(int q = 0; q < 3; q ++) {
int tx = p + i * 3;
int ty = q + j * 3;
if(board[tx][ty] == '.') continue;
else {
int t = board[tx][ty] - '0';
if(!mark[t]) mark[t] = true;
else return false;
}
}

}
}

for(int i = 0; i < 9; i ++) {
for(int j = 0; j < 9; j ++) {
memset(mark, false, sizeof(mark));
for(int k = 0; k < 9; k ++) {
if(board[i][k] == '.') continue;
else {
int t = board[i][k] - '0';
if(!mark[t]) mark[t] = true;
else return false;
}
}
memset(mark, false, sizeof(mark));
for(int k = 0; k < 9; k ++) {
if(board[k][j] == '.') continue;
else {
int t = board[k][j] - '0';
if(!mark[t]) mark[t] = true;
else return false;
}
}
}
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: