Valid Sudoku
来源:互联网 发布:电脑软件必备 编辑:程序博客网 时间:2024/04/29 18:05
https://oj.leetcode.com/problems/valid-sudoku/
1、题目要求:判断一个数独已给出数字部分是否有效(如果这个给出数独的每一行9个数没有重复的,每一列9个数也没有重复的,在9个3×3的方格里面9个数也没有重复,则说明此数独给出的数字是有效的。)
例:
这个数独是有效的。
2、解题思路:判断数独表是否有效,主要是看在每行,每列,每块中是否有重复的数字,我们可以将数独表中的每个已给出数字按关键码分别散列到3个hash table(9×9)中,首先初始化3个hash table所有元素为false,当散列一个元素的时候,就改为true,如果散列冲突(即出现数字重复的情况),则返回false。
class Solution {public: bool isValidSudoku(vector<vector<char> > &board) { vector<vector<bool>> rows(9, vector<bool>(9, false)); //初始化3个散列表中的元素都为false; vector<vector<bool>> cols(9, vector<bool>(9, false)); vector<vector<bool>> blocks(9, vector<bool>(9, false)); for(int i=0; i!=9; i++) //遍历数独表中的元素 { for(int j=0; j!=9; j++) //遍历数独表中的元素 { if(board[i][j]=='.') continue; int k= i- i%3 + j/3; //由i, j来确定board[i][j]在哪个块中 int num= board[i][j]- '1'; //确定数独表中每个元素key(char型字符'1'-'9')散列到3个散列表中的位置(0-8); if(rows[i][num]||cols[j][num]||blocks[k][num]) return false; rows[i][num]= cols[j][num]= blocks[k][num]= true; } } return true; }};
0 0
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- Valid Sudoku
- UML及第二遍文档总结
- 设计复数类
- 第16周上机实践项目2——用指针玩字符串(7)
- SQL编程:判断某个年份是否为闰年
- Linux串口编程
- Valid Sudoku
- iOS 学习手札
- 不要迷恋,而要实践
- 在flashdevelop中如何调用库中的元件属性
- mysql数据库设计学习---数据库设计规范化的五个要求
- Android开发 设置开机自动启动
- WINDOS 命令大全
- STM32F4固件库下载流程
- 九度OJ 1068 球的半径和体积 (模拟)