leetCode 36.Valid Sudoku(有效的数独) 解题思路和方法
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 ...
随机推荐
- .startsWith和endsWith的使用方法与说明
a.startsWith(b) --判断字符串a,是不是以字符串b开头 a.endsWith(b) --判断字符串a,是不是以字符串b结尾
- No mapping found for HTTP request with URI [/spring_liu/hello.do] in DispatcherServlet with name 'SpringMVC'
控制台一直报No mapping found for HTTP request with URI [/spring_liu/hello.do] in DispatcherServlet with na ...
- 前端那些事之----jQuery
1.jquery是什么 一个js的框架,可以方便的使用js 2 什么是jQuery对象 是由jQuery封装后的DOM对象 注意:与DOM对象的方法不同,不可以混用,但是可以相 ...
- KMP笔记
KMP #include<iostream> #include<cstring> #include<cstdio> #include<cmath> us ...
- CSS常用样式--font
CSS font 属性 参考:W3school- CSS font 所有浏览器都支持 font 属性,可在一个声明中设置所有字体属性,各属性需按顺序,语法如下: selector{ font:styl ...
- apache源码编译安装
源码安装apche 下载apache的源码包文件 访问http://mirror.bit.edu.cn/apache/httpd/,复制如下gz文件的链接地址,并使用wget下载到本地 wget -P ...
- pandas 2 选择数据
from __future__ import print_function import pandas as pd import numpy as np np.random.seed(1) dates ...
- CentOS的基本设置界面
系统的基本设置,如语言.键盘鼠标.时间.网络.壁纸.通知等功能的设置 高级设置:如磁盘分区.系统日志.各种系统分析工具
- hadoop-02-关闭防火墙
hadoop-02-关闭防火墙 su root service iptables status #查看状态 即时关闭: service iptables stop #关闭 重启之后关闭: chkcon ...
- TextView超链接
这里面涉及两个知识点--超链接和跳转.以下进行逐一解说: 1.实现超链接: 1.1形成超链接文本 public static SpannableString getUserlink(String us ...