leetcode-36-有效的数独
问题:
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-有效的数独相关推荐
- leetcode 36. 有效的数独 (将 9 * 9 数独划分成 9 宫格 )
leetcode 36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. ...
- [LeetCode] 36. 有效的数独(java实现)模拟题
[LeetCode] 36. 有效的数独(java实现)模拟题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...
- Java实现 LeetCode 36 有效的数独
36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在 ...
- LeetCode 36. 有效的数独(哈希)
文章目录 1. 题目信息 2. 解题 2.1 暴力3次遍历查找 2.2 一次遍历查找 1. 题目信息 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1- ...
- LeetCode 36有效的数独37解数独(八皇后问题)
公众号:bigsai 回复进群加入打卡 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列 ...
- leetcode -- 36.有效的数独
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- LeetCode 36 有效的数独
https://leetcode-cn.com/problems/valid-sudoku/ 解决方案 class Solution {public boolean isValidSudoku(cha ...
- LeetCode 36. 有效的数独
注释1:每3行为一组 i/3表示第几组 又*3表示每块是3*3 每3列为一组 j/3表示是第几组 将数据块分为 0 1 2 3 4 5 6 7 8 块 blockIndex表示第几块 p ...
- leetcode:36. 有效的数独
题目来源 leetcode:36. 有效的数独 题目描述 class Solution {public:bool isValidSudoku(vector<vector<char>& ...
- LeetCode刷题——36.有效的数独
文章目录 面试刷题第二天 LeetCode刷题--36.有效的数独 1.题目描述 2.解题思路(一) 3.解题思路(二) 面试刷题第二天 LeetCode刷题--36.有效的数独 1.题目描述 请你判 ...
最新文章
- 快速理解VirtualBox的四种网络连接方式
- .net 面试题系列文章三(附答案)
- ajax成功进入success但是获取不到返回值
- UI开发模式-容器模式
- python实现排序算法_数据结构之(3)python实现排序算法
- 【BZOJ 2721】 2721: [Violet 5]樱花 (筛)
- 深入浅出:Microsoft分布式事务处理协调器
- socket接收的消息怎么更新到页面_利用socketio实现简易即时消息服务
- java 心跳程序_Java实现心跳机制的方法
- 【推荐实践】推荐技术在旅游电商中的应用及挑战.pdf(附下载链接)
- 编程修养 阅读笔记二
- Transformations on DStreams之transform的使用 实现黑名单操作/指定过滤
- iOS 多线程的使用
- TeXStudio 中如何调用Gnuplot
- 用计算机按余弦,知道余弦的值怎么用计算器求度数
- 用MFC实现WebGUI--(CDHtmlDialog)
- 制作世界人口地图json--10.4学习日记
- Hook DirectX 在War3 魔兽争霸界面写屏
- android pak文件_xpak是什么文件 怎么安装xapk文件 和apk有什么区别
- VMware虚拟机超简单的联网方法
热门文章
- 码农和程序员等的差别
- linux中脚本退出函数,Linux 命令 shell 脚本之09(函数)
- java void eat_java匿名内部类
- java如何对一个表达式开根号_作为一个零基础的新手,如何系统的自学Java和JavaEE开发技术?...
- html.锁屏主题,锁屏HTML主题插件GroovyLock发布
- 【ruoyi若依】引入activiti 模块
- 【git】.gitignore文件
- 【若依(ruoyi)】字典管理
- 【JavaScript】【JQuery】获取 data-* 属性值
- 服务器系统生产厂家,生产云服务器厂家