leetcode No36. Valid Sudoku
来源:互联网 发布:玫瑰花淘宝 编辑:程序博客网 时间:2024/05/29 09:11
Question:
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.
判断数独是否合法,即每行,每列,每个子九宫格是没有重复的数
Algorithm:
两层循环,行和列比较好判断
那么子九宫格,我们来找一下规律
每一层循环要判断一个九宫格,我们给每个九宫格编号,第一行从左到右0~2,第二行从左到右3~5,第三行从左到右6~8
0号九宫格行号000111222 列号012012012i=0,j(0~8)
1号九宫格行号000111222 列号345345345i=1,j(0~8)
2号九宫格行号000111222 列号678678678 i=2,j(0~8)
3号九宫格行号333444555 列号012012012i=3,j(0~8)
4号九宫格行号333444555 列号345345345i=4,j(0~8)
5号九宫格行号333444555 列号678678678i=5,j(0~8)
6号九宫格行号666777888 列号012012012 i=6,j(0~8)
7号九宫格行号666777888 列号345345345i=7,j(0~8)
8号九宫格行号666777888 列号678678678i=8,j(0~8)
可以发现行号的规律i/3*3+j/3,列号的规律i%3*3+j%3
Accepted Code:
class Solution {//检查数独是否合法public: bool isValidSudoku(vector<vector<char>>& board) { int N=board.size(); for(int i=0;i<N;i++) { unordered_map<char,bool> hash1; //row unordered_map<char,bool> hash2; //column unordered_map<char,bool> hash3; //subgrid for(int j=0;j<N;j++) { if(board[i][j]!='.') { if(hash1[board[i][j]]==true) return false; hash1[board[i][j]]=true; } if(board[j][i]!='.') { if(hash2[board[j][i]]==true) return false; hash2[board[j][i]]=true; } if(board[(i/3)*3+j/3][(i%3)*3+j%3]!='.') { if(hash3[board[(i/3)*3+j/3][(i%3)*3+j%3]]==true) return false; hash3[board[(i/3)*3+j/3][(i%3)*3+j%3]]=true; } } } return true; }};
0 0
- leetcode No36. Valid Sudoku
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- LeetCode : Valid Sudoku
- [LeetCode]Valid Sudoku
- [leetcode] Valid Sudoku
- LeetCode-Valid Sudoku
- LeetCode Valid Sudoku
- LeetCode - Valid Sudoku
- LeetCode:Valid Sudoku
- leetcode-036:Valid Sudoku
- Leetcode: Valid Sudoku
- LeetCode题解:Valid Sudoku
- 【LeetCode】 Valid Sudoku
- Leetcode Valid Sudoku
- LeetCode | Valid Sudoku
- LeetCode Valid Sudoku
- Python伪装浏览器刷博客浏览量
- 各种流行深度学习构架的性能对比
- Java四种线程池的使用
- android studio ndk 环境搭建
- CSS3 渐变(Gradients)
- leetcode No36. Valid Sudoku
- hdu5360(优先队列)
- 一步一步演示神经网络回馈算法过程
- PHP面向对象总结
- Android来电监听和去电监听
- Struts2学习之常用配置及action接收参数
- 是这么设计Android项目架构的
- Android布局(LinearLayout)
- python urllib库使用