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 ...
随机推荐
- Android Studio添加jar包
1.先把jar包复制到项目的lib下,
- linux查看硬件信息
1,查看CPU信息:cat /proc/cpuinfo2,查看板卡信息:cat /proc/pci3,查看USB设备:cat /proc/bus/usb/devices4,查看PCI信息:lspci ...
- 【Qt】Qt环境搭建(Qt Creator)【转】
简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World.下面主要讲解如何利 ...
- ASP.NET中的ViewState
曾经在两次面试中都遇到了这个问题,就是ViewState中存储的变量到底存储在哪里.由于基础比较差,以前在学习的时候,就没有注意 到这里的细节,包括Session中存储的变量,所以我想ViewStat ...
- SQL中char,varchar,nvarchar等的异同
比较这几个数据类型,总是忘记,可能比较细节的原因.先做个记号,回头完善.
- Windows C盘格式化或者同平台迁移oracle数据库
我们知道如果是Linux 同平台迁移oracle数据库.只要是安全关闭了数据库,在新机器上创建用户组,配置了环境变量,将数据库安装目录拷贝到对应的目录就好用了. 一直在寻求Windows平台上这类的解 ...
- Java集合的小抄
在尽可能短的篇幅里,将所有集合与并发集合的特征.实现方式.性能捋一遍.适合所有"精通Java",其实还不那么自信的人阅读. [转自:花钱的年华] 期望能不止用于面试时,平时选择数据 ...
- 【jquery】javaScript中prototype的妙用 巧妙运用prototype属性原型链创建对象
prototype 可以有好多有优化实现方法 http://blog.csdn.net/liuqiwen0512/article/details/8089690 在 JavaScript 中,每个函 ...
- Linux命令练级初级
Linux命令练级初级 http://ke.qq.com/video/index.html?course_id=6815 ls -a 所有文件 -l 类型,连接数,所属用户,工作组, ...
- java常用集合类:Deque,ArrayList,HashMap,HashSet
图一:java collection 类图 Queue家族 无论是queue还是stack,现在常用的是Deque的实现类:如单线程的ArrayQueue,多线程的ArrayBlockingQueue ...