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

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. ANTLR3完全参考指南读书笔记[01]

    引用 Terence Parr. The Definitive ANTLR Reference, Building Domain Specific Languages(antlr3 version). ...

  2. 移动开发中使用Onsen UI的笔记

    onsen var m_index = ons.bootstrap() 初始化框架 m_index 赋值 增加对象. m_index.value('getUser',{ // user:window. ...

  3. Java强,软,弱,虚类型

    链接 http://wiseideal.iteye.com/blog/1469295

  4. leetcode 147. Insertion Sort List ----- java

    Sort a linked list using insertion sort. 插入排序. /** * Definition for singly-linked list. * public cla ...

  5. JavaWeb学习记录(二)——防盗链技术

    public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpSer ...

  6. Android—进度条

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  7. JSBinding + SharpKit / 实战:转换 2DPlatformer

    最后修改:2015年07月29日 2016年2月25日 2DPlatformer 是 Unity3D 的一个官方 Demo.本文将介绍使用 JSBinging + SharpKit 转换 2DPlat ...

  8. DNS-解析、劫持、污染

    DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工 ...

  9. Python--类定义

    转自:http://kanwoerzi.iteye.com/blog/1304466 Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可 ...

  10. argparse

    import argparse def test(a,b): print int(a)+int(b) parser = argparse.ArgumentParser() parser.add_arg ...