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

LeetCode(36)有效的数独 ⭐⭐

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

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

注意:

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

思路一:普通人暴力法,使用哈希表

class Solution {public boolean isValidSudoku(char[][] board) {int rowSize = board.length;int cellSize = board[0].length;Set<Character> set = new HashSet<>();for(int i=0; i<rowSize; i++) {set.clear();for(int j=0; j<cellSize; j++) {char ele = board[i][j];if('.' != ele) {if(set.contains(ele)) {return false;}set.add(ele);}}}for(int i=0; i<cellSize; i++) {set.clear();for(int j=0; j<rowSize; j++) {char ele = board[j][i];if('.' != ele) {if(set.contains(ele)) {return false;}set.add(ele);}}}for(int i=0; i<3; i++) {for(int j=0; j<3; j++) {set.clear();for(int k=i*3;k<(i+1)*3;k++) {for(int q=j*3;q<(j+1)*3;q++) {char ele = board[k][q];if('.' != ele) {if(set.contains(ele)) {return false;}set.add(ele);}}}}}return true;}
}

思路二:数学方法

class Solution {public boolean isValidSudoku(char[][] board) {int[][] rows = new int[9][9];int[][] columns = new int[9][9];int[][][] subboxes = new int[3][3][9];for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {char c = board[i][j];if (c != '.') {int index = c - '0' - 1;rows[i][index]++;columns[j][index]++;subboxes[i / 3][j / 3][index]++;if (rows[i][index] > 1 || columns[j][index] > 1 || subboxes[i / 3][j / 3][index] > 1) {return false;}}}}return true;}
}

 

http://www.lryc.cn/news/273822.html

相关文章:

  • 用LCD显示字符‘A‘
  • Zookeeper相关问题及答案(2024)
  • 1.大数据概述
  • NGUI基础-Widget
  • SpringBoot集成沙箱支付
  • BUUCTF--gyctf_2020_borrowstack1
  • 图像分割-Grabcut法(C#)
  • C# WPF上位机开发(Web API联调)
  • c语言:用结构体求平均分|练习题
  • echarts 仪表盘进度条 相关配置
  • Simpy:Python之离散时间序列仿真
  • 连接GaussDB(DWS)报错:Invalid or unsupported by client SCRAM mechanisms
  • 汽车标定技术(十四)--标定数据固化方法简介
  • 2024年关键技术发展战略趋势前瞻
  • Java程序设计——GUI设计
  • three.js Raycaster(鼠标点击选中模型)
  • Springboot整合RocketMQ 基本消息处理
  • 红外传感器深入解析
  • 18、Kubernetes核心技术 - InitContainer(初始化容器)
  • electron进程通信之预加载脚本和渲染进程对主进程通信
  • 如何有效使用 .gitignore 文件
  • 大数据毕设分享 flink大数据淘宝用户行为数据实时分析与可视化
  • 大语言模型训练数据集
  • python的课后练习总结4(while循环)
  • Flink Connector 开发
  • Golang leetcode707 设计链表 (链表大成)
  • Django和Vue项目运行过程中遇到的问题及解决办法
  • Single-Image Crowd Counting via Multi-Column Convolutional Neural Network
  • el-cascader隐藏某一级的勾选框及vue报错Error in callback for watcher “options“的解决办法
  • 2024美赛数学建模思路A题B题C题D题E题F题思路汇总 选题分析