题目:

判断数独是否合法

请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 . 表示。
样例
下列就是一个合法数独的样例。
注意 一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。
说明
什么是 数独?
http://sudoku.com.au/TheRules.aspx
http://baike.baidu.com/subview/961/10842669.htm
解题:
感觉这很难到不知道如何进行,在这里看到,只需判断每行,每类,每个小3*3矩阵内的数字是1-9就是合法的,但是这里只填充部分数的,按照上面说,没有填充的数 认为是该位置是合法的,这里的程序,也是这样搞的,感觉这不对头,但是意思是说:只要部分填充的数独满足了数独的条件,一定能填充成数独。<正确与否,我不确定,但是程序就是这样写的,逆推的结论>
Java程序:

class Solution {
/**
* @param board: the board
@return: wether the Sudoku is valid
*/
public boolean isValidSudoku(char[][] board) {
boolean[] visited = new boolean[9];
//row
for(int i=0;i<9;i++){
Arrays.fill(visited,false); //填充visited数组中的每个元素都是false
for(int j=0;j<9;j++){
if(!process(visited,board[i][j]))
return false;
}
} //col
for(int i=0;i<9;i++){
Arrays.fill(visited,false);
for(int j=0;j<9;j++)
if(!process(visited,board[j][i]))
return false;
}
//sub matrix
for(int i=0;i<9;i+=3)
for(int j=0;j<9;j+=3){
Arrays.fill(visited,false);
for(int k = 0;k<9;k++)
if(!process(visited,board[i+ k/3][j + k%3]))
return false;
}
return true;
}
private boolean process(boolean[] visited,char dight){
if(dight=='.')
return true;
int num = dight - '0';
if(num<1 || num>9 || visited[num-1])
return false;
visited[num-1] = true;
return true;
}
};

总耗时: 822 ms

Python程序:

class Solution:
# @param board, a 9x9 2D array
# @return a boolean
def isValidSudoku(self, board): # sub matrix
for i in range(0,9,3):
for j in range(0,9,3):
visited = [False]*9
for k in range(3):
m = i + k
n = j + k
if(self.process(visited,board[m][n])==False):
return False # row
for i in range(9):
visited = [False]*9
for j in range(9):
if(self.process(visited,board[i][j])==False):
return False # col
for j in range(9):
visited = [False]*9
for i in range(9):
if(self.process(visited,board[i][j])==False):
return False return True def process(self,visited,digit):
if digit=='.':
return True
num = int(digit)
if(num<1 or num>9 or visited[num-1]==True):
return False
visited[num-1] = True
return True

总耗时: 148 ms

在判断3*3矩阵时候,根据我的这样方法很简单的哦

还有就是直判断行和列是否满足条件也能AC

所以我把判断小矩阵是否1-9组成放在了最上面

lintcode:Valid Sudoku 判断数独是否合法的更多相关文章

  1. 判断数独是否合法(LintCode)

    判断数独是否合法 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用. 表示. 样例 下列就是一个合法数独的样例. 注意 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填 ...

  2. LintCode389.判断数独是否合法

    LintCode简单题:判断数独是否合法 问题描述: 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项: 一个合法的数独(仅部分填充)并不一定是可解的.我们 ...

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

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

  4. 36. Valid Sudoku 判断九九有效的数独

    [抄题]: Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according ...

  5. [LeetCode] Valid Sudoku 验证数独

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

  6. [LeetCode] 36. Valid Sudoku 验证数独

    Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...

  7. [Leetcode] valid sudoku 有效数独

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

  8. LintCode_389 判断数独是否合法

    题目 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填充的空格有效即可. 说明 什么是 数独? ...

  9. [leetcode]36. Valid Sudoku验证数独

    Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...

随机推荐

  1. mybatis的一对多映射

    延续mybatis的一对一问题,如果一个用户有多个作品怎么办?这就涉及到了一对多的问题.同样的,mybatis一对多依然可以分为两种方式来解决. 一.使用内嵌的ResultMap实现一对多映射 1)实 ...

  2. Apache 2.4 多站点配置记录

    基于域名的虚拟主机配置 <VirtualHost *:80> DocumentRoot /var/www/cms ServerName www.example.com RewriteEng ...

  3. SOAP Web 服务介绍

    已经跨入 2015 年,当今最为常见的两种 Web 服务类型分别是: REST 和 SOAP .不过,从趋势来看,越来越多人已经开始使用 REST 风格的 Web 服务.而 SOAP 大多也开始或已经 ...

  4. SQLServer处理亿万级别的数据的优化措施

    如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下方面进行: 去掉表的所有索引 用SqlBulkCopy进行插入 分表或者分区,减少每个表的数据总量 在某个表完全写完之后再建立索引 ...

  5. mysql时间处理

    两种方式,一个是在数据库查询的时候就截取,另一个就是在使用的时候截取. 1.数据库 select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test 2.ja ...

  6. ngnix 下配置多域名跳转 配置方法

    自己申请了多个域名,统一使用 http://goipc.cn/ 格式访问网站 server_name goipc.cn ; server_name www.goipc.cn ; server_name ...

  7. ubuntu: 环境搭建

    1.修改更新源    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak    sudo gedit /etc/apt/sources.li ...

  8. C#中DataTable与实体集合通用转换(使用扩展方法)

    本案例提供了:把DataRow转换为单个实体.dataTable转换为List泛型支持时间格式转换. 下文的方法都是扩展方法.扩展方法要求写在静态类中,方法也要静态. 它必须在一个非嵌套.非泛型的静态 ...

  9. Windows 7 下配置IIS,并且局域网内可访问

    win7的iis很麻烦滴!我搭建过一次!不过有点问题!还是xp好! 一.进入Win7的 控制面板,选择左侧的 打开或关闭Windows功能 . 二.现在出现了安装Windows功能的选项菜单,注意选择 ...

  10. Careercup - Facebook面试题 - 5110993575215104

    2014-04-30 16:12 题目链接 原题: The beauty of a number X is the number of 1s in the binary representation ...