三个数组分别储存某行某列某33方阵的数字出现情况,有重复则无效。
时间复杂度O©(C=99)
C++代码:
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
const int len = 9;
int row[len][len]{ 0 }, col[len][len]{ 0 }, grid[len][len]{ 0 };
for (int i = 0; i < len; ++i) {
for (int j = 0; j < len; ++j) {
if (board[i][j] != '.') {
int v = board[i][j] - '1';
if (++row[i][v] > 1) {
return false;
}
if (++grid[i / 3 * 3 + j / 3][v] > 1) {
return false;
}
if (++col[j][v] > 1) {
return false;
}
}
}
}
return true;
}
};