2021-05-03
2021/5/3 18:26:48
本文主要是介绍2021-05-03,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
@LeetCode刷题
文章目录
- 题目
- 一、实现思路
- 二、总体代码
题目
题目链接:https://leetcode-cn.com/problems/valid-sudoku/
一、实现思路
- 创建三个
hashmap
来装每行、每列和每个小宫格内的数字及个数
HashMap<Integer, Integer> rows[] = new HashMap[9]; HashMap<Integer, Integer> columns[] = new HashMap[9]; HashMap<Integer, Integer> boxs[] = new HashMap[9]; for( int i=0; i<9; ++i ){ rows[i] = new HashMap<>(); columns[i] = new HashMap<>(); boxs[i] = new HashMap<>(); }
- 确认当前数字处于哪一宫格:想象为一个mn的二维数组变成一个一维数组,那么原来的[i, j] = [jn+i];
int box_index = (j/3)*3+(i/3);
- 当每一行
rows
的当前的num
的value
小于等于1、每一列columns
的当前num
的value
小于等于1、每一个小宫格boxs
的当前的num
的value
小于等于1时,才能继续运行,否则就要返回false。
if( rows[i].get(n)>1 || columns[j].get(n)>1 || boxs[box_index].get(n)>1 ){ return false; }
二、总体代码
class Solution { public boolean isValidSudoku(char[][] board) { HashMap<Integer, Integer> rows[] = new HashMap[9]; HashMap<Integer, Integer> columns[] = new HashMap[9]; HashMap<Integer, Integer> boxs[] = new HashMap[9]; for( int i=0; i<9; ++i ){ rows[i] = new HashMap<>(); columns[i] = new HashMap<>(); boxs[i] = new HashMap<>(); } for( int i=0; i<9; ++i ){ for( int j=0; j<9; ++j ){ if( board[i][j]=='.' ){ continue; } int n = board[i][j]-'0'; int box_index = (j/3)*3+(i/3); rows[i].put(n, rows[i].getOrDefault(n, 0)+1); columns[j].put(n, columns[j].getOrDefault(n, 0)+1); boxs[box_index].put(n, boxs[box_index].getOrDefault(n, 0)+1); if( rows[i].get(n)>1 || columns[j].get(n)>1 || boxs[box_index].get(n)>1 ){ return false; } } } return true; } }
这篇关于2021-05-03的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略