36. Valid Sudoku, leetcode
来源:互联网 发布:大守护者升级数据 编辑:程序博客网 时间:2024/06/16 22:00
题目:
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.
class Solution {public: bool isValidSudoku(vector<vector<char>>& board) {bool ans1, ans2, ans3;for (auto row : board){vector<char> nine1;for (char a : row)if (a != '.') nine1.push_back(a);if (!isValid(nine1))return false;}for (int i = 0; i < 9; i++){vector<char> nine2;for (int j = 0; j < 9; j++)if (board[j][i] != '.') nine2.push_back(board[j][i]);//易错点 是(j, i)而不是(i,j)if (!isValid(nine2))return false;}for (int i = 0; i < 9; i++){vector<char> nine3;int x = (i / 3) * 3, y = (i % 3 ) * 3;//易错点 不应该 -1 了for (int p = x; p < x + 3; p++)//易错点 应该是x+3 而不是 3for (int q = y; q < y + 3; q++)if (board[p][q] != '.') nine3.push_back(board[p][q]);if (!isValid(nine3))return false;}return true;} bool isValid(vector<char> nine) { unordered_map<char,int> pool; for(char a : nine) { if(pool.count(a)) return false; else pool[a]++; } return true; }};
Three flags are used to check whether a number appear.
used1: check each row
used2: check each column
used3: check each sub-boxes
class Solution{public: bool isValidSudoku(vector<vector<char> > &board) { int used1[9][9] = {0}, used2[9][9] = {0}, used3[9][9] = {0}; for(int i = 0; i < board.size(); ++ i) for(int j = 0; j < board[i].size(); ++ j) if(board[i][j] != '.') { int num = board[i][j] - '0' - 1, k = i / 3 * 3 + j / 3; if(used1[i][num] || used2[j][num] || used3[k][num]) return false; used1[i][num] = used2[j][num] = used3[k][num] = 1; } return true; }};
0 0
- [LeetCode]36.Valid Sudoku
- LeetCode --- 36. Valid Sudoku
- LeetCode 36.Valid Sudoku
- [Leetcode] 36. Valid Sudoku
- 【leetcode】36. Valid Sudoku
- [leetcode] 36. Valid Sudoku
- Leetcode 36. Valid Sudoku
- 36. Valid Sudoku LeetCode
- leetcode 36. Valid Sudoku
- LeetCode *** 36. Valid Sudoku
- leetcode 36. Valid Sudoku
- [LeetCode]36. Valid Sudoku
- LeetCode 36. Valid Sudoku
- leetcode-36. Valid Sudoku
- 36.[Leetcode]Valid Sudoku
- Leetcode 36.Valid Sudoku
- LeetCode-36.Valid Sudoku
- leetcode 36. Valid Sudoku
- 资源素材 -- Google发布750个Material Design Icon 图标
- jackson的使用
- MyBitis入门实例
- 909422229________JDBC关于转账问题事务解决
- 需求拆分到设计流程总览
- 36. Valid Sudoku, leetcode
- 6 XML和Tomcat的入门知识
- hadoop 2.7.3 源码分析(三):hadoop远程调试
- Java线程(十)----CAS
- Cannot open precompiled header file: 'Debug/****.pch': No such file or directory
- Java线程(十一)----Fork/Join-Java并行计算框架
- UMl——静态图
- 记一次坑爹的内存不足troubleshooting
- 虚函数