问题:

package com.example.demo;import java.util.HashMap;
import java.util.Map;public class Test36 {/*** 思路:* 构建多个map,二维数组中,每一行是一个map,每一行是一个map,在一个3*3的方格是一个map* 在遍历二维数组的时候,将当前索引代表的值放入到不同的map中,* 同时在每次添加进map后,判断当前map中是否已经有重复的字符了* Map<Integer,Integer>:key表示是哪个数,value代表出现过几次*/public boolean isValidSudoku(char[][] board) {Map<Integer, Integer>[] row = new HashMap[9];Map<Integer, Integer>[] column = new HashMap[9];Map<Integer, Integer>[] box = new HashMap[9];// 初始化数组for (int i = 0; i < 9; i++) {row[i] = new HashMap<>();column[i] = new HashMap<>();box[i] = new HashMap<>();}// 遍历数组,将每一行中的字符代表的数字放入map中,并将出现的次数自增for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {char num = board[i][j];if (num != '.') {int n = (int) num;// 行内,将当前字符(数字)作为key放入map中,如果原来有则加1,没有则当前置为1row[i].put(n, row[i].getOrDefault(n, 0) + 1);column[j].put(n, column[j].getOrDefault(n, 0) + 1);// 当前i,j属于第几个3*3的方格int boxIndex = (i / 3) * 3 + j / 3;box[boxIndex].put(n, box[boxIndex].getOrDefault(n, 0) + 1);//判断每个map中的value是否大于1,如果大于则代表出现过多次if (row[i].get(n) > 1 || column[j].get(n) > 1 || box[boxIndex].get(n) > 1) {return false;}}}}return true;}public static void main(String[] args) {Test36 t = new Test36();char[][] arr = {{'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'}};boolean validSudoku = t.isValidSudoku(arr);System.out.println(validSudoku);}}

leetcode-36-有效的数独相关推荐

  1. leetcode 36. 有效的数独 (将 9 * 9 数独划分成 9 宫格 )

    leetcode 36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. ...

  2. [LeetCode] 36. 有效的数独(java实现)模拟题

    [LeetCode] 36. 有效的数独(java实现)模拟题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...

  3. Java实现 LeetCode 36 有效的数独

    36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在 ...

  4. LeetCode 36. 有效的数独(哈希)

    文章目录 1. 题目信息 2. 解题 2.1 暴力3次遍历查找 2.2 一次遍历查找 1. 题目信息 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1- ...

  5. LeetCode 36有效的数独37解数独(八皇后问题)

    公众号:bigsai 回复进群加入打卡 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列 ...

  6. leetcode -- 36.有效的数独

    判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...

  7. LeetCode 36 有效的数独

    https://leetcode-cn.com/problems/valid-sudoku/ 解决方案 class Solution {public boolean isValidSudoku(cha ...

  8. LeetCode 36. 有效的数独

    注释1:每3行为一组  i/3表示第几组    又*3表示每块是3*3    每3列为一组 j/3表示是第几组 将数据块分为 0 1 2 3 4 5 6 7 8 块 blockIndex表示第几块 p ...

  9. leetcode:36. 有效的数独

    题目来源 leetcode:36. 有效的数独 题目描述 class Solution {public:bool isValidSudoku(vector<vector<char>& ...

  10. LeetCode刷题——36.有效的数独

    文章目录 面试刷题第二天 LeetCode刷题--36.有效的数独 1.题目描述 2.解题思路(一) 3.解题思路(二) 面试刷题第二天 LeetCode刷题--36.有效的数独 1.题目描述 请你判 ...

最新文章

  1. 快速理解VirtualBox的四种网络连接方式
  2. .net 面试题系列文章三(附答案)
  3. ajax成功进入success但是获取不到返回值
  4. UI开发模式-容器模式
  5. python实现排序算法_数据结构之(3)python实现排序算法
  6. 【BZOJ 2721】 2721: [Violet 5]樱花 (筛)
  7. 深入浅出:Microsoft分布式事务处理协调器
  8. socket接收的消息怎么更新到页面_利用socketio实现简易即时消息服务
  9. java 心跳程序_Java实现心跳机制的方法
  10. 【推荐实践】推荐技术在旅游电商中的应用及挑战.pdf(附下载链接)
  11. 编程修养 阅读笔记二
  12. Transformations on DStreams之transform的使用 实现黑名单操作/指定过滤
  13. iOS 多线程的使用
  14. TeXStudio 中如何调用Gnuplot
  15. 用计算机按余弦,知道余弦的值怎么用计算器求度数
  16. 用MFC实现WebGUI--(CDHtmlDialog)
  17. 制作世界人口地图json--10.4学习日记
  18. Hook DirectX 在War3 魔兽争霸界面写屏
  19. android pak文件_xpak是什么文件 怎么安装xapk文件 和apk有什么区别
  20. VMware虚拟机超简单的联网方法

热门文章

  1. 码农和程序员等的差别
  2. linux中脚本退出函数,Linux 命令 shell 脚本之09(函数)
  3. java void eat_java匿名内部类
  4. java如何对一个表达式开根号_作为一个零基础的新手,如何系统的自学Java和JavaEE开发技术?...
  5. html.锁屏主题,锁屏HTML主题插件GroovyLock发布
  6. 【ruoyi若依】引入activiti 模块
  7. 【git】.gitignore文件
  8. 【若依(ruoyi)】字典管理
  9. 【JavaScript】【JQuery】获取 data-* 属性值
  10. 服务器系统生产厂家,生产云服务器厂家