Valid Sudoku
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.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
思路:题目非常easy。主要是规则的理解,数独的游戏没有玩过。不知道什么规则,我以为随意9个方格1-9的个数都至多为1,谁知规则是特定的九个格内1-9的个数至多为1。其它不考虑。
代码比較啰嗦,但思路清晰,例如以下:
public class Solution {
//置为静态变量
static Map<Character,Integer> map = new HashMap<Character,Integer>();
public boolean isValidSudoku(char[][] board) {
//推断每行
for(int i = 0; i < board.length; i++){
initMap();//每次均需初始化
for(int j = 0; j < board[0].length; j++){
//是数字
if(board[i][j] >= '0' && board[i][j] <= '9'){
if(map.get(board[i][j]) > 0){//说明反复数字
return false;
}else{
map.put(board[i][j],1);
}
}else if(board[i][j] != '.'){//出现空格和0-9之外的字符
return false;//直接返回false
}
}
}
//推断每列
for(int i = 0; i < board[0].length; i++){
initMap();//每次均需初始化
for(int j = 0; j < board.length; j++){
//是数字
if(board[j][i] >= '0' && board[j][i] <= '9'){
if(map.get(board[j][i]) > 0){//说明反复数字
return false;
}else{
map.put(board[j][i],1);
}
}else if(board[j][i] != '.'){//出现空格和0-9之外的字符
return false;//直接返回false
}
}
}
//推断九宫格
for(int i = 0; i < board.length - 2; i = i+3){//行{
for(int j = 0; j < board[0].length - 2; j=j+3){
initMap();//初始化
for(int m = i; m < i + 3;m++){
for(int n = j; n < j+3; n++){
//是数字
if(board[m][n] >= '0' && board[m][n] <= '9'){
if(map.get(board[m][n]) > 0){//说明反复数字
return false;
}else{
map.put(board[m][n],1);
}
}else if(board[m][n] != '.'){//出现空格和0-9之外的字符
return false;//直接返回false
}
}
}
}
}
return true;
}
//初始化map为每一个key均赋值0
private void initMap(){
for(char i = '0';i <= '9'; i++){
map.put(i,0);
}
}
}
leetCode 36.Valid Sudoku(有效的数独) 解题思路和方法的更多相关文章
-
LeetCode 36 Valid Sudoku(合法的数独)
题目链接: https://leetcode.com/problems/valid-sudoku/?tab=Description 给出一个二维数组,数组大小为数独的大小,即9*9 其中,未填入 ...
-
leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法
Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', de ...
-
LeetCode:36. Valid Sudoku,数独是否有效
LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ...
-
LeetCode 36 Valid Sudoku
Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...
-
Java [leetcode 36]Valid Sudoku
题目描述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...
-
蜗牛慢慢爬 LeetCode 36.Valid Sudoku [Difficulty: Medium]
题目 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...
-
[LeetCode] 36. Valid Sudoku 验证数独
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
-
[leetcode]36. Valid Sudoku验证数独
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
-
LeetCode 36. Valid Sudoku (Medium)
题目 Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according ...
随机推荐
-
javascript设计模式之单体模式
一入前端深似海,刚入前端,以为前端只是div+css布局外加jquery操作DOM树辣么简单.伴随着对前端学习的深入,发现前端也是博大精深,而且懂得越多,才发现自己越无知,所以一定不能停下脚步的学习. ...
-
iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
-
BZOJ3226: [Sdoi2008]校门外的区间
感觉很有趣的题呢. 每个点拆成两个,线段树维护. 不过这题难点其实在输入输出. #include<bits/stdc++.h> #define N (1<<17) #defin ...
-
winfrom的两种拖拽方式和界面阴影
方式1private Point mouseOffset; //记录鼠标指针的坐标 private bool isMouseDown = false; //记录鼠标按键是否按下 private voi ...
-
JavaScript实现进入某一页面时自动将鼠标光标放在某一textbox上
<script language="javascript" type="text/javascript"> var txtText0 = " ...
-
夺命雷公狗ThinkPHP项目之----企业网站27之网站前台单页的完成(从百度编辑器里面取出文章数据)
我们的单页面里主要是为了可以取出文章分类表的栏目内容,废话先不说, 我们的实现要点: 1...获取get过来的栏目cate_id 2...然后用条件查询栏目表 <?php namespace H ...
-
10张思维导图带你学习JavaScript
学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出10张JavaScript相关的思维导图. 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却 ...
-
减少HTTP请求之合并图片详解(大型网站优化技术)
原文:减少HTTP请求之合并图片详解(大型网站优化技术) 一.相关知识讲解 看过雅虎的前端优化35条建议,都知道优化前端是有多么重要.页面的加载速度直接影响到用户的体验.80%的终端用户响应时间都花在 ...
-
form表单提交和ajax提交优先级
form中若定义action,那么,ajax将不能执行.form默认提交的请求优先级高于ajax
-
使用commons-pool2实现FTP连接池
GitHub : https://github.com/jayknoxqu/ftp-pool 一. 连接池概述 频繁的建立和关闭连接,会极大的降低系统的性能,而连接池会在初始化的时候会创建一定 ...