题目描述:(链接)
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
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.
解题思路:
先验证行,再验证列,最后验证小方格!
1 class Solution { 2 public: 3 bool isValidSudoku(vector<vector<char>>& board) { 4 bool used[9]; 5 6 for (int i = 0; i < 9; ++i) { 7 memset(used, false, sizeof(used)); 8 for (int j = 0; j < 9; ++j) { 9 if (!isVaild(board[i][j], used)) { 10 return false; 11 } 12 } 13 14 memset(used, false, sizeof(used)); 15 for (int j = 0; j < 9; ++j) { 16 if (!isVaild(board[j][i], used)) { 17 return false; 18 } 19 } 20 } 21 22 for (int r = 0; r < 3; ++r) { 23 for (int c = 0; c < 3; ++c) { 24 memset(used, false, sizeof(used)); 25 26 for (int i = r * 3; i < 3 * r + 3; ++i) { 27 for (int j = c * 3; j < 3 * c + 3; ++j) { 28 if (!isVaild(board[i][j], used)) { 29 return false; 30 } 31 } 32 } 33 } 34 } 35 36 return true; 37 } 38 private: 39 bool isVaild(char c, bool *used) { 40 if (c == '.') { 41 return true; 42 } 43 44 if (used[c - '1']) { 45 return false; 46 } 47 48 used[c - '1'] = true; 49 return true; 50 } 51 };