36. Valid Sudoku
生活随笔
收集整理的这篇文章主要介绍了
36. Valid Sudoku
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
description:
判断数独是否正确
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
Note:
A Sudoku board (partially filled) could be valid but is not necessarily solvable. Only the filled cells need to be validated according to the mentioned rules. The given board contain only digits 1-9 and the character '.'. The given board size is always 9x9.Example:
Example 1:Input: [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"] ] Output: trueExample 2:Input: [["8","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"] ] Output: false Explanation: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.answer:
class Solution { public:bool isValidSudoku(vector<vector<char>>& board) {if (board.empty() || board[0].empty()) return false;vector<vector<bool>> rowFlag(9, vector<bool>(9, false));vector<vector<bool>> colFlag(9, vector<bool>(9, false));vector<vector<bool>> cellFlag(9, vector<bool>(9, false));for (int i = 0; i < 9; i++){for (int j = 0; j < 9; j++) {if (board[i][j] >= '1' && board[i][j] <= '9'){int c = board[i][j] - '1';if (rowFlag[i][c] || colFlag[c][j] || cellFlag[3 * (i / 3) + j / 3][c]) return false;rowFlag[i][c] = true;colFlag[c][j] = true;cellFlag[3 * (i / 3) + j / 3][c] = true; // 这里对小方块的坐标转换很关键,首先 (i/3) 是确定这个数所在的小方块所在第几行(0/1/2)// 然后再乘以3是算出这个数之前几行有几个方块,在加上此列前面几个,就是算出来了这个数到底在第几个方块。} }}return true;} };relative point get√:
hint :
其实是对这个答案有疑问的:
- 没有判断如果是个不合法的数独形式怎么办
- 没有判断数字不是1-9内的怎么办
转载于:https://www.cnblogs.com/forPrometheus-jun/p/11116372.html
总结
以上是生活随笔为你收集整理的36. Valid Sudoku的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 在linux学习中遇到的问题
- 下一篇: Git 推送到远程仓库