lintcode:Valid Sudoku 判断数独是否合法
题目:
判断数独是否合法

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 判断数独是否合法的更多相关文章
- 判断数独是否合法(LintCode)
		判断数独是否合法 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用. 表示. 样例 下列就是一个合法数独的样例. 注意 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填 ... 
- LintCode389.判断数独是否合法
		LintCode简单题:判断数独是否合法 问题描述: 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项: 一个合法的数独(仅部分填充)并不一定是可解的.我们 ... 
- LeetCode:36. Valid Sudoku,数独是否有效
		LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ... 
- 36. Valid Sudoku 判断九九有效的数独
		[抄题]: Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according ... 
- [LeetCode] Valid Sudoku 验证数独
		Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ... 
- [LeetCode] 36. Valid Sudoku 验证数独
		Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ... 
- [Leetcode] valid sudoku 有效数独
		Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ... 
- LintCode_389 判断数独是否合法
		题目 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项 一个合法的数独(仅部分填充)并不一定是可解的.我们仅需使填充的空格有效即可. 说明 什么是 数独? ... 
- [leetcode]36. Valid Sudoku验证数独
		Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ... 
随机推荐
- WinForm  TreeView节点重绘,失去焦点的高亮显示
			当用户焦点离开TreeView时,TreeView选中节点仍然高亮,但是颜色符合主题. 设置TreeView.HideSelection = False;可让选中节点保持高亮. 添加重绘事件 Tree ... 
- 腾讯微博OAuth2.0 .NET4.0 SDK 发布以及网站腾讯微博登陆示例代码(原创)
			1.使用简单方便,包含详细注释: 2.暂时只支持xml格式字符串的转换,建议接口使用xml参数:3.QweiboSDK.Controllers命名空间下已包含所有API接口:4.只需调用到Qweibo ... 
- [大牛翻译系列]Hadoop(8)MapReduce 性能调优:性能测量(Measuring)
			6.1 测量MapReduce和环境的性能指标 性能调优的基础系统的性能指标和实验数据.依据这些指标和数据,才能找到系统的性能瓶颈.性能指标和实验数据要通过一系列的工具和过程才能得到. 这部分里,将介 ... 
- PHP获取当前日期或指定日期的所在月的第一天和最后一天
			<?php function getthemonth($date) { $firstday = date('Y-m-01', strtotime($date)); $lastday = date ... 
- Android:什么是Holo?【Translated By KillerLegend】
			Android:什么是Holo? Martin Brinkmann on May 6, 2013 in Google Android 3 [Translated By KillerLegend] 当你 ... 
- 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 ... 
- oracle11g关于表空间的问题
			1.oracle11g默认的块大小为8K 每个表空间里面的单个数据文件最大为32G (2^22-1) *4k 最多可以放1024个单个文件 SQL> show parameter ... 
- 用Python作GIS之二:STARS开发环境配置
			STARS的一般使用可以通过REGAL网页快速学习http://regionalanalysislab.org/?n=STARS再次不做详细介绍这里关注的主题是对STARS源代码分析即为使用Pytho ... 
- Python之str(),repr(),``
			对于对象obj: str()生成的字串是给人看的 repr()生成的字串是给解析器看的 ``与repr()等义. 最直接就是: ------------------- obj=eval(repr(ob ... 
- RUP(Rational Unified Process)
			RUP Rational Unified Process 目前阶段在学习UML,怎么会写RUP呢?学习UML是为了更好的把系统搭建好,RUP也是一样,为系统服务! 软件危机 美国国家总审计局,在198 ... 
