解题思路:
直接判断,9行,9列,9个子面板是否符合要求
原题目:
Determine if a Sudoku is valid, according to: [Sudoku Puzzles - The Rules.](http://sudoku.com.au/TheRules.aspx)
The Sudoku board could be partially filled, where empty cells are filled with the character '.'.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
AC解,C++代码,菜鸟一个,请大家多多指正
class Solution {
public:
bool isValidNums(vector<char> nums) {
map<char, int> char_count;
for (vector<char>::size_type ix = 0; ix != nums.size(); ++ix) {
if (nums[ix] != '.') {
char_count[nums[ix]]++;
if (char_count[nums[ix]] > 1) {
return false;
}
}
}
return true;
}
bool isValidSudoku(vector<vector<char>>& board) {
for (int row = 0; row < 9; row++) {
if (!isValidNums(board[row])) {
return false;
}
for (int col = 0; col < 9; col++) {
if (row % 3 == 0 && col % 3 == 0) {
vector<char> tmp;
tmp.push_back(board[row][col]);
tmp.push_back(board[row][col + 1]);
tmp.push_back(board[row][col + 2]);
tmp.push_back(board[row + 1][col]);
tmp.push_back(board[row + 1][col + 1]);
tmp.push_back(board[row + 1][col + 2]);
tmp.push_back(board[row + 2][col]);
tmp.push_back(board[row + 2][col + 1]);
tmp.push_back(board[row + 2][col + 2]);
if (!isValidNums(tmp)) {
return false;
}
}
}
}
for (int col = 0; col < 9; col++) {
vector<char> tmp;
for (int row = 0; row < 9; row++) {
tmp.push_back(board[row][col]);
}
if (!isValidNums(tmp)) {
return false;
}
}
return true;
}
};