题目:

判断数独是否合法

请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 . 表示。
样例
下列就是一个合法数独的样例。
注意 一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。
说明
什么是 数独?
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. WinForm TreeView节点重绘,失去焦点的高亮显示

    当用户焦点离开TreeView时,TreeView选中节点仍然高亮,但是颜色符合主题. 设置TreeView.HideSelection = False;可让选中节点保持高亮. 添加重绘事件 Tree ...

  2. 腾讯微博OAuth2.0 .NET4.0 SDK 发布以及网站腾讯微博登陆示例代码(原创)

    1.使用简单方便,包含详细注释: 2.暂时只支持xml格式字符串的转换,建议接口使用xml参数:3.QweiboSDK.Controllers命名空间下已包含所有API接口:4.只需调用到Qweibo ...

  3. [大牛翻译系列]Hadoop(8)MapReduce 性能调优:性能测量(Measuring)

    6.1 测量MapReduce和环境的性能指标 性能调优的基础系统的性能指标和实验数据.依据这些指标和数据,才能找到系统的性能瓶颈.性能指标和实验数据要通过一系列的工具和过程才能得到. 这部分里,将介 ...

  4. PHP获取当前日期或指定日期的所在月的第一天和最后一天

    <?php function getthemonth($date) { $firstday = date('Y-m-01', strtotime($date)); $lastday = date ...

  5. Android:什么是Holo?【Translated By KillerLegend】

    Android:什么是Holo? Martin Brinkmann on May 6, 2013 in Google Android 3 [Translated By KillerLegend] 当你 ...

  6. How to use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem

    SQLIOSim是模拟SQLServer的行为来测试IO性能,也可以对损坏磁盘进行一定校验 这是一个SQL Server 2012 安装完后自带的工具 一般在C:\Program Files\Micr ...

  7. oracle11g关于表空间的问题

    1.oracle11g默认的块大小为8K  每个表空间里面的单个数据文件最大为32G   (2^22-1) *4k   最多可以放1024个单个文件    SQL> show parameter ...

  8. 用Python作GIS之二:STARS开发环境配置

    STARS的一般使用可以通过REGAL网页快速学习http://regionalanalysislab.org/?n=STARS再次不做详细介绍这里关注的主题是对STARS源代码分析即为使用Pytho ...

  9. Python之str(),repr(),``

    对于对象obj: str()生成的字串是给人看的 repr()生成的字串是给解析器看的 ``与repr()等义. 最直接就是: ------------------- obj=eval(repr(ob ...

  10. RUP(Rational Unified Process)

    RUP Rational Unified Process 目前阶段在学习UML,怎么会写RUP呢?学习UML是为了更好的把系统搭建好,RUP也是一样,为系统服务! 软件危机 美国国家总审计局,在198 ...