=============

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的更多相关文章

  1. [Leetcode][Python]36: Valid Sudoku

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 36: Valid Sudokuhttps://oj.leetcode.com ...

  2. LeetCode:36. Valid Sudoku,数独是否有效

    LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ...

  3. leetcode 37. Sudoku Solver 36. Valid Sudoku 数独问题

    三星机试也考了类似的题目,只不过是要针对给出的数独修改其中三个错误数字,总过10个测试用例只过了3个与世界500强无缘了 36. Valid Sudoku Determine if a Sudoku ...

  4. 【LeetCode】36. Valid Sudoku 解题报告(Python)

    [LeetCode]36. Valid Sudoku 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址 ...

  5. LeetCode 36 Valid Sudoku

    Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...

  6. 【LeetCode】36 - Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.(http://sudoku.com.au/TheRu ...

  7. Java [leetcode 36]Valid Sudoku

    题目描述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...

  8. 【LeetCode题意分析&解答】36. Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

  9. 36. Valid Sudoku (Array; HashTable)

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

随机推荐

  1. 灰度图像的自动阈值分割(Otsu 法)(转载)

    灰度图像的自动阈值分割(Otsu 法) 机器视觉领域许多算法都要求先对图像进行二值化.这种二值化操作阈值的选取非常重要.阈值选取的不合适,可能得到的结果就毫无用处.今天就来讲讲一种自动计算阈值的方法. ...

  2. tyvj 1057 dp 变形背包

    P1057 金明的预算方案 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第二道 描述 金明今天很开心,家里购置的新房就要领钥匙了 ...

  3. soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现

        1.首先 要添加一个全局 自定义变量 Custom Properties   2.用transfer property 将取来的值 放入到变量 getToken 里   3.在另一个testc ...

  4. Android SDK Manager Google Apis 下载

    本意是想利用google的gcm来实装android推送功能的,很遗憾, google貌似已经停止提供啥服务给国内了,或者说国内想继续使用google 服务暂时变得几乎不可能了.找了个代理来进行goo ...

  5. [poj 3691]DNA repair

    好久没刷 poj 了,今天练习 AC 自动机时去水了一发喵~ 在 poj 上 A 题的感觉并没有 BZOJ 上那么愉悦,准确的说是痛不欲生 真是应了那句老话,你再慢也有比你慢的,你再快也有比你快的…… ...

  6. java的nio之:java的nio系列教程之java的io和nio的区别

    当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们如何影响您的代 ...

  7. GDI+中GIF图片的显示

    某位网友曾经问过我GDI+中Gif图像显示的问题,一直没时间给你写,在此致歉.我把这篇文章送给他. 一.GIF格式介绍 1.概述 GIF(Graphics Interchange Format,图形交 ...

  8. CUDA中修饰符的解释

    1.  __device__ 使用 _device_ 限定符声明的函数具有以下特征: n         在设备上执行: n         仅可通过设备调用. 2. __global__ 使用 _g ...

  9. Linux中的15个‘echo’ 命令实例

    echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串. echo命令的语法是: echo [选 ...

  10. 【转】SVN的UUID错误

    操作TortoiseSVN时,报如下错误:       Command Update       Repository UUID '62b86956-73d9-2945-ba87-0546d71898 ...