【LeetCode: 36. 有效的数独 + 模拟】

LeetCode 第36题:有效的数独 题目要求我们编写一个算法来判断一个 9x9 的数独是否有效。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。一个有效的数独(部分已被填充)不一定是可解的。只需要根据已经填入的数字要求验证即可。空的单元格用'.'表示。例如:原因:第一列有两个8。通过这个数独小侦探的过程,我们学会了如何检查一个数独是否有效。利用哈希表的方法,我们能够在O(1)的时间复杂度内完成每一个格子的检查,整体时间复杂度为O(n^2),其中n。 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

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

数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 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)或者 ‘.’

🌟 求解思路&实现代码&运行结果


⚡ 模拟

🥦 求解思路
  1. 根据题目给定的规则模拟即可,在模拟过程中开辟3个二维数组分别表示行、列、3*3单元格,在某一行、列、第几个单元格上此时被数字x填充的标记。
  2. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public static boolean isValidSudoku(char[][] board) {
        boolean[][] row = new boolean[9][10];
        boolean[][] col = new boolean[9][10];
        boolean[][] bucket = new boolean[9][10];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                int bid = 3 * (i / 3) + (j / 3);
                if (board[i][j] != '.') {
                    int num = board[i][j] - '0';
                    if (row[i][num] || col[j][num] || bucket[bid][num]) {
                        return false;
                    }
                    row[i][num] = true;
                    col[j][num] = true;
                    bucket[bid][num] = true;
                }
            }
        }
        return true;
    }

}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

大疆 2021 嵌入式笔试题 在深圳做嵌入式,大疆公司绝对是 Top 级别的,大疆的技术栈也很深。 阅读详情

相关推荐

用Coze平台30分钟打造《花光10亿》小游戏:零代码AI开发实战

本文详细介绍了如何利用字节跳动推出的Coze平台,在30分钟内零代码开发一款名为《花光10亿》的AI小游戏。通过配置提示词、集成图像生成插件、构建自动化工作流以及使用数据库功能,即使没有编程基础的用户也能快速将创意转化为可交互的智能应用,体验AI开发的便捷与高效。

weixin_29313547的博客 207

leetcode每日一练-第36题-有效的数独

if(rows[i][index]>1 || cols[j][index]>1 || subboxes[i/3][j/3][index]>1)//如果在行、列或3x3宫内的计数器值大于1,表示该数字在对应的范围内出现了多次,因此数独无效。//通过subboxes[i / 3][j / 3]访问第i行第j列所在3x3宫的计数器数组,然后通过[index]访问该数字的计数器,并将其加1。//然后,将得到的整数值减去1,是因为数组的索引是从0开始的,而数独中的数字是从1开始的。//表示每一列中数字的出现次数。

weixin_48820672的博客 200

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 393

LeetCode第 36 题:有效的数独(C++)

36. 有效的数独 - 力扣(LeetCode) 关于行和列,使用哈希表记录就可以了。3x3的方格也是使用哈希表映射,但是怎样映射可以将一个块内的元素都映射到正确的位置呢?需要对横纵坐标进行一下变换。 假设使用block[9][9]用来映射块,每一行代表一个3*3的方块,列下标对应数字,那么block[3][4] = true代表第四个方块中已经存在5(4+1)这个数字: 上图中每一个方块映射到block数组中,对应的横坐标为:i/3 * 3 + j/3,i是行标,j是列标。行标决定一组block的起始

zj 594

串并装换器的设计及仿真结果

串/并转换是高速数据流处理的重要技巧之一。串/并转换的实现方法多种多样,根据数据的的顺序和数量要求,可以选用寄存器,双扣RAM,SRAM,FIFO,等实现。对于 数量比较小的设计可以采用移位寄存器完成串/并转换。       在工程中,如何体现串/并转换的设计思想呢? 怎样才能提高系统的处理速度呢 ?       一个简单的串/并转换框架如下图所示,串行输入的数据通过FPGA内部的 n 个移

stubben_bear的专栏 2273

【MediaPipe实战】从零构建实时人脸关键点检测与表情分析系统

本文详细介绍了如何使用MediaPipe框架从零构建实时人脸关键点检测与表情分析系统。通过Python代码实现,系统能够精准检测468个3D人脸关键点,并实时分析用户表情,适用于智能交互应用。文章包含环境配置、核心实现、可视化技巧及性能优化等实战内容,帮助开发者快速掌握深度学习在计算机视觉中的应用。

weixin_30836759的博客 73

LeetCode 36. 有效的数独

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

JarlenJohn 1312

Linux下CUDA 11.8与vllm的完美搭配:从环境配置到避坑指南

本文详细介绍了在Linux系统中为CUDA 11.8环境部署vLLM的完整实战指南。针对cu118与vLLM的版本兼容性核心问题,提供了从Python、PyTorch版本选择,到关键依赖vllm-nccl-cu11的安装避坑,以及环境调优、生产级容器化部署的全面解决方案,帮助开发者高效构建稳定的大模型推理服务。

weixin_29095049的博客 308

LeetCode 36.有效的数独

LeetCode 36.有效的数独

m0_74767826的博客 383

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 144

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

leetcode 36. 有效的数独 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 示例 1: 输入: [ [“5”,“3”,".",".",“7”,".",".",".","."], [“6”,".",".",“1”,“9”,“5”,

优快云Wudanna的博客 837

用 ABAP RAP + XCO 把 Excel 导入业务对象:从弹窗 Action 到 EML 落库与附件清理的完整实践

摘要:本文介绍了在SAP RAP框架下实现Excel批量导入功能的完整方案。通过XCO库的XLSX模块解析Excel文件,结合RAP的行为定义和Fiori Elements界面集成,构建了一个支持试运行、数据校验和自动合并的业务导入功能。方案采用RAP标准范式,包括Action参数设计、EML事务处理、附件管理以及异常消息反馈,实现了从文件上传到数据落库的端到端流程,既保证了系统稳定性,又提升了业务用户体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 276

面试经典150题[034]:有效的数独(LeetCode 36)

面试经典150题[034]:有效的数独(LeetCode 36)

YoungHong1992 1020

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

leetcode 36 有效的数独

可以引入bool数组grid[3][3][9],grid[row/3][col/3][c-'a']表示第row/3行,第col/3列的3*3宫格中是否出现了字符c,如果出现了c,即为true,否则就为false;grid[row/3][col/3][c-'a']表示第row/3行,第col/3列的3*3宫格中是否出现了字符c,如果出现了c,即为true,否则就为false。<3>字符'1'到'9'在每一个以粗实线分隔的3*3宫内只能出现一次。<1>字符'1'到'9'在每一行只能出现一次;

2301_80296866的博客 419

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode 36. 有效的数独(模拟题)

​ ​请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)注意:一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规则,验证已经填入的数字是否有效即可。 空白格用 ‘.’ 表示。 示例1:示例2:此题方法是模拟题直接模拟就行了 执行结果: 略......

刘小雨的博客 883

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

leetcode36有效的数独C++

1、题目 https://leetcode-cn.com/problems/valid-sudoku/ 2、题意 题解1:开三个9*9的数组 line[i][num]第i行值为num的个数 row[j][num]为第j列值为num的个数 cell[i/3*3+j/3][num]表示第i/3*3的区域为num的个数 总共9个区域 class Solution { public: b...

weixin_46819595的博客 197

[leetcode] 36. 有效的数独

[leetcode] 36. 有效的数独

lvhao123456789的博客 480

每日算法练习:LeetCode 36. 有效的数独 ✅

宫格编号计算错误,不要写成i/3 + j/3数组维度搞反是行号在前,数字在后忘记跳过空白格:直接对做字符转数字会出错数字范围:数字是 1-9,数组第二维开 10,索引 0 不用这道题是数组模拟的经典入门题,核心是对三个维度的重复校验,代码逻辑清晰,边界处理简单,是面试中考察细心程度的高频题。一次遍历的写法效率最高,空间复杂度 O (1),是最优解法也可以用哈希表 / Set 实现,但数组标记法更高效、更简洁核心考点:对规则的理解、数组的应用、宫格编号的计算。

wfbcg的博客 343

36. 有效的数独(java)

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 '.' 表示。 示例 1: 输入: [ ["5","3",".",".","7",...

weixin_43306331的博客 414

Leetcode[哈希表] 36. 有效的数独

Leetcode[哈希表] 36. 有效的数独审题代码实现反思 审题 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 '.' 表示。 示例 1: 输入: [ ["5","3",".",".","7",".",".",".","."], [

weixin_45415929的博客 342

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

[LeetCode] 34. 在排序数组中查找元素的第一个和最后一个位置(java实现)二分1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(二分): 二分的核心是找出一个分界点,如果左右两段有不同的性质,二分就能给它找出来。 解题思路: 用二分找出第一个target—if(nums[mid] >= target) 再用二分找出第二个target—if(nums[mid]

cloud的博客 560

【LeetCode】有效的数独 [M](模拟)

LeetCode 36:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。采用模拟求解。

小七的博客 364

Leetcode 155 螺旋矩阵 | 有效的数独

top:上边界(初始 = 0,第一行)bottom:下边界(初始 = 行数 - 1,最后一行)left:左边界(初始 = 0,第一列)right:右边界(初始 = 列数 - 1,最后一列)模拟顺时针转圈 + 四边界收缩固定步骤:右→下→左→上,遍历完一条边收缩一次终止条件:边界重合,所有元素遍历完成代码逻辑清晰,无坑,适合新手掌握一次遍历 + 3 个布尔数组查重行不重复、列不重复、3×3 宫不重复最难公式:*小宫编号 = (i/3)3 + (j/3)代码极简、无坑、运行效率拉满。

im_AMBER的博客 387

LeetCode 36. 有效的数独(模拟)

问题描述 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 示例 1: 输入: [ [“5”,“3”,".",".",“7”,".",".",".","."], [“6”,".",".",“1”,“9”,“5”,".",".","."], [

m0_46630461的博客 166

力扣每日一练之二维数组下篇Day5

力扣每日一练之二维数组下篇Day5 🍕前面的话🥞 大家好!本篇文章将介绍2周搞定数据结构的题,来自力扣的36.有效的数独和73.矩阵置零,本文将以这两道题作为背景,介绍经典的数独以及矩阵模拟,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第五天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路漫漫其修远兮,吾将上下而求索,相信我们一定都可以拿到自己期望的offer,冲冲冲! 👩‍💻博客主页:京与旧铺的博客主页 ✨

qq_46272491的博客 1524
上一篇: 【LeetCode: 12. 整数转罗马数字 + 模拟 + 有序表】
下一篇: 【LeetCode: 155. 最小栈 + 栈 + 数据结构设计】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值