36. Valid Sudoku
=============
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.
====
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
----------------
一个合法的数独应该符合三条规则
1,每一行必须有数字1-9出现,而且必须出现一次
2,每一列必须有数字1-9出现,而且必须出现一次
3,面板中每9个连续的子面板,必须由数字1-9出现,而且必须出现一次
规则连接:http://sudoku.com.au/TheRules.aspx
思路:
先按照行检查,再按照列检查,最后对子面板检查
检查的过程是使用hash_table形式的数组实现的.
==================
code:
class Solution {
/*一个合法的数独应该符合三条规则
* 1,每一行必须有数字1-9出现,而且必须出现一次
* 2,每一列必须有数字1-9出现,而且必须出现一次
* 3,面板中每9个连续的子面板,必须由数字1-9出现,而且必须出现一次
* 规则连接:http://sudoku.com.au/TheRules.aspx
*
*
* 实现方法:
* 先按照行检查,在按照列检查,最后对子面板检查
* 检查的过程是使用hash_table形式的数组实现的
*
* */
public:
bool isValidSudoku(vector<vector<char>>& board) {
bool used[];
for(int i = ;i<;i++){
fill(used,used+,false);
for(int j = ;j<;j++){//check 行
if(!check(board[i][j],used))
return false;
}
fill(used,used+,false);
for(int j = ;j<;j++){//check 列
if(!check(board[j][i],used))
return false;
}
}
for(int r = ;r<;r++){
for(int c = ;c<;c++){
fill(used,used+,false);
for(int i = r*;i<r*+;i++){
for(int j = c*;j<c*+;j++){
if(!check(board[i][j],used))
return false;
}
}
}
}//for-for
}//isValidSudoku
private:
bool check(char ch,bool used[]){
if(ch == '.') return true;
if(used[ch - '']) return false;/*
char型字节码可以充当数组下表,
利用char类型的字面值就可以索引char字面值<key>对应的数组值<value>
这是数据结构hash_table的体现: key->value
*/
return used[ch-''] = true;
}
};
36. Valid Sudoku的更多相关文章
- [Leetcode][Python]36: Valid Sudoku
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 36: Valid Sudokuhttps://oj.leetcode.com ...
- LeetCode:36. Valid Sudoku,数独是否有效
LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ...
- leetcode 37. Sudoku Solver 36. Valid Sudoku 数独问题
三星机试也考了类似的题目,只不过是要针对给出的数独修改其中三个错误数字,总过10个测试用例只过了3个与世界500强无缘了 36. Valid Sudoku Determine if a Sudoku ...
- 【LeetCode】36. Valid Sudoku 解题报告(Python)
[LeetCode]36. Valid Sudoku 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址 ...
- LeetCode 36 Valid Sudoku
Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...
- 【LeetCode】36 - Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.(http://sudoku.com.au/TheRu ...
- Java [leetcode 36]Valid Sudoku
题目描述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...
- 【LeetCode题意分析&解答】36. Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- 36. Valid Sudoku (Array; HashTable)
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
随机推荐
- Linux系统下查看硬件信息命令大全
导读 有许多命令可以用来查看 Linux 系统上的硬件信息.有些命令只能够打印出像 CPU 和内存这一特定的硬件组件信息,另外一些命令可以查看多种硬件组件的信息. 这个教程可以带大家快速了解一下查看各 ...
- AngularJS的路由、模块、依赖注入
AngularJS的路由在实际应用中更多是由另外封装好的angular-ui-router.js实现的! 为什么不用Ajax而要用前端路由?
- input type=file
(1)首先来说一下,如何让 <input type='file' >成为你想要的模样. 最简单的方法就是在让<input type='file' >的透明度为0(完全透明),然 ...
- SQL注入测试平台 SQLol -2.SELECT注入测试
前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试. 一条完成 ...
- JS初学之-代码精简思路
1.差不多的代码,观察其不一样的地方,使用变量存起来,方便替代. 2.将其存入函数之中方便调用.
- leetcode 123. Best Time to Buy and Sell Stock III ----- java
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- spark新能优化之序列化
概叙: 在任何分布式系统中,序列化都是扮演着一个重要的角色的.如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多.所以,进行Spark ...
- iOS开发中那些高效常用的宏
#ifndef MacroDefinition_h #define MacroDefinition_h //-------------------获取设备大小--------------------- ...
- C#→关于System.Data.Linq下的Table<TEntity> 泛型类 的问题
Table<TEntity>表示表格记录,它是一个泛型集合类,它的元素就是表格实体对象.它提供一组方法,对元素进行添加删除操作,并可以通过DataContext将这些操作保存到数据库. 表 ...
- ABBYY FineReader的快速任务功能如何用
在使用ABBYY FineReader Pro for Mac OCR文字识别软件处理文档时,经常会执行一系列相同的步骤,如扫描.识别.将已识别文本导出为特定格式或导出至特定应用程序.针对经常执行的任 ...