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 ...
随机推荐
- mysql数据库主从复制部署笔记
主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...
- poj1062 最短路
题意:有n个物品,任务是得到1号物品,现在每个物品有它的主人,你可以用金钱购买物品,当然也可以用其他物品加上优惠的价格换取,但是有个要求,因为每个物品的主人有各自的等级,你所交易过的人中,等级差不能超 ...
- 【转】免费开源的FTP软件,FileZilla
原文网址:http://baike.baidu.com/view/670329.htm?fr=aladdin FileZilla FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版 ...
- c++特性:指向类成员的指针和非类型类模板参数和函数指针返回值 参数推导机制和关联型别
一.c++允许定义指向类成员的指针,包括类函数成员指针和类数据成员指针 格式如下: class A { public: void func(){printf("This is a funct ...
- mysql启动与关闭(手动与自动)
手动管理mysql的启动与关闭 [root@mysql ~]# service mysql start --手动启动mysqlStarting MySQL. SUCCESS![root@mysql ~ ...
- C# 二维list
public class ValueList : List<double> { public ValueList() { } } public ValueList[] valListArr ...
- javaScript call 函数的用法说明
call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.ar ...
- open_table与opened_table
好多人在调优Mysql的时候,总是对open_tables和opend_tables两个参数分别不清. 网上好多解释都是这样的:open_tables:当前打开表的数量opened_tables:当前 ...
- Nginx反向代理讲解和配置
首先来介绍下Nginx的反向代理.代理服务器一般分为正向代理(通常直接称为代理服务器)和反向代理. 画个图我们就好理解了. 正向代理:可以想象成是路由器,我们要通过它来上网的那种.(可以说是客户端的代 ...
- 017. ADO.NET Connection和command及DataReader
ADO.NET主要包括Connection , command , DataReader, DataSet, DataAdapter5个对象, 通过这5个对象可以对数据库进行查询, 添加, 修改及删除 ...