说明

算法: Valid Sudoku
地址:https://leetcode.com/problems/valid-sudoku/

Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

  1. Each row must contain the digits 1-9 without repetition.
  2. Each column must contain the digits 1-9 without repetition.
  3. Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.

    A partially filled sudoku which is valid.

The Sudoku board could be partially filled, where empty cells are filled with the character ‘.’.

Example 1:

Input:
[["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]
]
Output: true

Example 2:

Input:
[["8","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]
]
Output: false

Explanation: Same as Example 1, except with the 5 in the top left corner being
modified to 8. Since there are two 8’s in the top left 3x3 sub-box, it is invalid.
Note:

A Sudoku board (partially filled) could be valid but is not necessarily solvable.
Only the filled cells need to be validated according to the mentioned rules.
The given board contain only digits 1-9 and the character ‘.’.
The given board size is always 9x9.

解法

有效数独,也就是行,列,33方块不能有重复的数字。
最简单明了的方法,用一个HashSet来判断
行:data + “row” + rowId
列: data + “col” + colId
3
3方块: data + “block” + rowId/3 + “_” + colId/3

前提条件排除:data != ‘.’

public boolean isValidSudokuWithOneHashset(char[][] board) {HashSet<String> set = new HashSet<>();char item;for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {item = board[i][j];if (item == '.') {continue;}if (!set.add(item + "row" + i)) {return false;}if (!set.add(item + "col" + j)) {return false;}if (!set.add(item + "block" + i/3 + "_" + j/3)) {return false;}}}return true;}

代码下载

https://github.com/zgpeace/awesome-java-leetcode/blob/master/code/LeetCode/src/hashtable/ValidSudoku.java

算法:有效九宫格数独Valid Sudoku相关推荐

  1. LeetCode 36. Valid Sudoku(九宫格数独)

    依次检查每行,每列,每个子九宫格是否出现重复元素,如果出现返回false,否则返回true. 难点在于表示第i个九宫格每个格点的坐标. 观察行号规律: 第0个九宫格:000111222; 第1个九宫格 ...

  2. leetcode之Valid Sudoku有效的数独(一步步改进代码)

    题目链接:Valid Sudoku有效的数独 题目已经十分确定的说了只有1~9,因此标记法无疑是非常好的选择. 基本思路:对行.列.小数独块分别用一个size为9的数组来标记数字1~9在本行(列/块) ...

  3. 36. Valid Sudoku数独判断

    题目:数独填写正确判断 https://leetcode.com/problems/valid-sudoku/description/ Determine if a Sudoku is valid, ...

  4. leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)

    36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ 题解 class Solution {public boolean isVal ...

  5. 算法实践:数独的基本解法

    数独(Sudoku)是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫内的数字均含1-9,不重复. 每一道合格的数独谜 ...

  6. 摒弃法解决数独问题sudoku,附python实现

    定义 数独是源自18世纪瑞士的一种数学游戏.是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫(3*3)内的数字均含1 ...

  7. 【LeetCode从零单排】No36 Valid Sudoku

    题目       判断数独是否成立的一道题,看的是某大神的答案,写的太漂亮了. Determine if a Sudoku is valid, according to: Sudoku Puzzles ...

  8. OpenCV 玩九宫格数独(二):knn 数字识别

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:刘潇龙 前言 首先需要说明,这里所说的数字识别不是手写数字识别! 但凡对机器学习有所了解的人,相信看到数 ...

  9. JAVA代码—算法基础:数独问题(Sodoku Puzzles)

    JAVA代码-算法基础:数独问题(Sodoku Puzzles) 数独问题(Sodoku Puzzles) 数独游戏(日语:数独 すうどく)是一种源自18世纪末的瑞士的游戏,后在美国发展.并在日本得以 ...

  10. [leetcode]36. Valid Sudoku c语言

    题目 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

最新文章

  1. matlab cat
  2. 在Pycharm编辑器中调用getpass模块
  3. 【Elasticsearch】Elasticsearch:Runtime fields 入门, Elastic 的 schema on read 实现 - 7.11 发布
  4. You have provided a value for the LANGUAGE_CODE setting that is not in the LANGUAGES setting
  5. 中文版开源!这或许是最经典的 Python 编程教材
  6. 【优化算法】多目标粘菌算法(MOSMA)【含Matlab源码 1597期】
  7. 二级c语言考试系统安卓,二级C语言考试系统
  8. html5手指点击速度,CPS手速测试 - 鼠标点击速度测试插件
  9. 【每日一知】什么是TAOCP? (2021.02.07)
  10. 健康,home? [java的内存浅析]
  11. 【随笔】移动端input type|语义与IOS按键
  12. UE4 蓝图接口 BluePrint Interface
  13. Jikes 研究虚拟机(RVM)二 JVM 的组织
  14. 设计模式的七大原则——开闭原则(下)
  15. 6-1 调用函数打印闰年 (15 分)
  16. 2021中国智能制造发展现状和前景趋势分析
  17. 中国航信2020java校招笔试题_航信校招java笔试题
  18. FreeBSD:从内核获取其他进程的pid及cpu占用率
  19. 电商网站爬虫案例(1)
  20. JavaScript奇淫技巧(一)

热门文章

  1. oracle删除数据用户,oracle删除用户及表空间,导入用户和数据
  2. 关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路
  3. tf.cast()的用法(转)
  4. python对象--加减重构
  5. Context 使用不当造成内存泄露
  6. (十六)企业部分之lvs
  7. ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist的原因分析
  8. 如何从zabbix数据库中获取每日流量最大值
  9. 【转】搞清楚脚本中这些函数的调用规律
  10. Java的反射 基础+简单复制对象实例