当前位置: 首页 > news >正文

LeetCode(34)有效的数独【矩阵】【中等】

在这里插入图片描述

目录

    • 1.题目
    • 2.答案
    • 3.提交结果截图

链接: 36. 有效的数独

1.题目

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

注意:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 空白格用 '.' 表示。

示例 1:

输入:board = 
[["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"]]
输出:true

示例 2:

输入:board = 
[["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"]]
输出:false
解释:除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。 但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

提示:

  • board.length == 9
  • board[i].length == 9
  • board[i][j] 是一位数字(1-9)或者 '.'

2.答案

class Solution {public boolean isValidSudoku(char[][] board) {int[][] block = new int[3][9];int[] line = new int[9];int[] column = new int[9];for (int i = 0; i < 9; i++) {Arrays.fill(line, 0);Arrays.fill(column, 0);if (i % 3 == 0) {for (int j = 0; j < 3; j++) {Arrays.fill(block[j], 0);}}for (int j = 0; j < 9; j++) {// 数字 1-9 在每一行只能出现一次。char lineCar = board[i][j];if ('.' != lineCar) {if (line[lineCar - '0' - 1] != 0) {return false;}line[lineCar - '0' - 1] = 1;}// 数字 1-9 在每一列只能出现一次。char columnChar = board[j][i];if ('.' != columnChar) {if (column[columnChar - '0' - 1] != 0) {return false;}column[columnChar - '0' - 1] = 1;}// 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。if ('.' != lineCar) {if (block[j / 3][lineCar - '0' - 1] != 0) {return false;}block[j / 3][lineCar - '0' - 1] = 1;}}}return true;}
}

3.提交结果截图

在这里插入图片描述

整理完毕,完结撒花~ 🌻

相关文章:

  • 【PyTorch】(三)模型的创建、参数初始化、保存和加载
  • html实现360度产品预览(附源码)
  • 使用electron工具打包web端到PC端应用程序
  • PLC通过lora网关采集温室大棚温湿度数据
  • antDesignPro a-table样式二次封装
  • Redis总结
  • 简历上的工作经历怎么写
  • YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
  • 解决Linux Visual Studio Code显示字体有问题/Liunx下Visual Studio Code更换字体
  • 【brpc学习实践十一】session-local与thread-local应用与brpc抽象工厂模式实践
  • Linux设置Nginx开机自启
  • 【Openstack Train安装】九、Nova安装
  • 【微服务】java 规则引擎使用详解
  • 《Effective C++》条款27
  • python 生成器的作用
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Apache的80端口被占用以及访问时报错403
  • docker容器内的网络抓包
  • Docker入门(二) - Dockerfile
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Github访问慢解决办法
  • GitUp, 你不可错过的秀外慧中的git工具
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java程序员幽默爆笑锦集
  • mysql 数据库四种事务隔离级别
  • Netty 4.1 源代码学习:线程模型
  • node和express搭建代理服务器(源码)
  • Phpstorm怎样批量删除空行?
  • Redis在Web项目中的应用与实践
  • Terraform入门 - 3. 变更基础设施
  • Vue.js 移动端适配之 vw 解决方案
  • webpack+react项目初体验——记录我的webpack环境配置
  • 缓存与缓冲
  • 排序(1):冒泡排序
  • 驱动程序原理
  • 为什么要用IPython/Jupyter?
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 如何在招聘中考核.NET架构师
  • ​​​​​​​​​​​​​​Γ函数
  • ​【已解决】npm install​卡主不动的情况
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (java)关于Thread的挂起和恢复
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (译)2019年前端性能优化清单 — 下篇
  • (原)本想说脏话,奈何已放下
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口