[leetcode Q36] valid sudoku
来源:互联网 发布:阿凡达妹妹实力知乎 编辑:程序博客网 时间:2024/05/16 04:01
1. 题目
检查 9x9 宫格中的行列,子宫格(3x3)是否有重复的数字出现。
标签为 hash table
2. 思路
简单的思路是使用三次循环,第一次检查每行是否有效,第二次检查每列是否有效,第三次检查每个子宫格是否有效。
检查过程另外使用一个数组来保存当前状态,标签虽然是 hash table ,但没有用到常见的哈希算法,更多的是借用数组的下标来实现。
3. 实现
class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { char certifier[10]; char temp; // 检查每行 for (int i = 0; i < 9; i++) { memset(certifier, 0, sizeof(char) * 10); for (int j = 0; j < 9; j++) { temp = board[i][j]; if (temp != '.') { if (certifier[temp - '0']) return false; else certifier[temp - '0'] = true; } } } // 检查每列 for (int i = 0; i < 9; i++) { memset(certifier, 0, sizeof(char) * 10); for (int j = 0; j < 9; j++) { temp = board[j][i]; if (temp != '.') { if (certifier[temp - '0']) return false; else certifier[temp - '0'] = true; } } } // 检查子宫格 for (int m = 0; m < 9; m += 3) { for (int n = 0; n < 9; n += 3) { memset(certifier, 0, sizeof(char) * 10); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { temp = board[m + i][n + j]; if (temp != '.') { if (certifier[temp - '0']) return false; else certifier[temp - '0'] = true; } } } } } return true; }};
0 0
- [leetcode Q36] 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
- iOS陆先森开发随笔(四)tablview点击push到下一个页面,pop出来时位置下移问题
- 构造函数,重载方法,继承
- hdu4521 线段树+dp
- 如何去掉XP系统中文件夹的只读属性
- Android窗口机制
- [leetcode Q36] valid sudoku
- 快速下单!简化EcStore的购物结算流程
- 复数四则运算 PAT
- 今日BBC
- [Guava源码日报](2)Strings分析
- 在职场该保持一种什么姿态?高调还是低调
- 数据模型(待填)
- 【ZOJ3229】Shoot the Bullet 有源汇上下界最大流
- VB.net中获取二维数组的元素个数