力扣-有效的数独

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

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

注意:

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

大致思路:

题目并不需要我们求出每个格子中具体的数,而是判断输入的数字是否符合数独的规则,所以我们只需要判断每一行中,每一列和每个九宫格中是否存在重复的数字即可。如果存在重复的数返回 false,否则返回 true。

重复数的判断:

1.遍历二维数组borad,对每个元素判断其是否符合条件。

2.用大小为10的数组 hash 保存数字出现的次数。

3.把输入的数字转化为整形的数字并作为下标访问hash 数组,当hash中某个元素出现次数 >=1,返回 false,3种条件都判断完时返回 true。

bool Isvalid(char**board,int x,int y)
{int i,j;int s;int hashcol[10]={0};//判断一列中出现元素的个数int hashrol[10]={0};//判读一行中出现元素的个数int hashmagic[10]={0};//九宫格中出现元素的个数//行for(j=0;j<9;j++){if(board[x][j]!='.')//只判断输入的数,空格无需判断{s=board[x][j]-'0';//字符数字转化为整形数字if(hashrol[s]>=1)//出现重复的数return false;hashrol[s]++;}}//列for(i=0;i<9;i++){if(board[i][y]!='.'){s=board[i][y]-'0';//if(hashcol[s]>=1)return false;hashcol[s]++;}}//九宫格int startx=x/3*3;//每个九宫格的起始坐标int starty=y/3*3;for(i=startx;i<startx+3;i++){for(j=starty;j<starty+3;j++){if(board[i][j]!='.'){s=board[i][j]-'0';if(hashmagic[s]>=1)return false;hashmagic[s]++;}}}return true;
}
bool isValidSudoku(char** board, int boardSize, int* boardColSize) {for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(board[i][j]!='.'){if(!Isvalid(board,i,j))return false;}}}return true;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660428.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【城市】应届生第一次打工需要知道的常识(薪资结构,社保,五险二金,个税,专项扣除)

【城市】应届生第一次打工需要知道的常识&#xff08;薪资结构&#xff0c;社保&#xff0c;五险二金&#xff0c;个税&#xff0c;专项扣除&#xff09; 文章目录 1、什么是应届生 & 如何界定应届生2、社保&#xff0c;五险一金&#xff0c;五险二金3、薪资结构&#xff0…

idea设置自定义注释模板

idea设置自定义注释模板 欢迎使用Markdown编辑器 在IntelliJ IDEA中设置自定义注释模板&#xff0c;你可以按照以下步骤操作&#xff1a; 欢迎使用Markdown编辑器 打开 IntelliJ IDEA&#xff0c;进入 File 菜单&#xff1a; 在 Windows 或 Linux 系统中&#xff0c;点击顶部…

ubuntu sudo apt-get install neo4j 配置安装与设置远程访问

文章目录 下载Adding the Debian repositoryInstalling Neo4j安装流程设置远程访问 下载 neo4j 官方的下载地址&#xff0c;进入页面之后&#xff0c;往下滑&#xff1a; https://neo4j.com/deployment-center/#community 点击 Visit https://debian.neo4j.com/ Adding the …

Xilinx IP解析之Multiplier v12.0

前言 乘法器是Xilinx的数学运算IP核中最基础的IP核之一&#xff0c;熟练掌握它是使用FPGA进行数字信号处理的基础。 本文参考pg108-mult-gen.pdf——Multiplier v12.0。 一. IP 概述 与 产品手册 参考&#xff1a;[Multiplier (xilinx.com))](https://china.xilinx.com/produc…

Python可视化利用Seaborn实现高级统计图表

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 利用 Seaborn 实现高级统计图表 在数据科学和数据可视化领域&#xff0c;Seaborn 是一个备…

Go语言基本语法(三)指针

什么是指针 在Go语言中&#xff0c;"指针是一种存储变量内存地址的数据类型"&#xff0c;意味着指针本身是一个特殊的变量&#xff0c;它的值不是数据本身&#xff0c;而是另一个变量在计算机内存中的位置&#xff08;地址&#xff09;。形象地说&#xff0c;就像存…

解决iview(view ui)中tabs组件中使用图片预览组件ImagePreview,图片不显示问题

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、问题描述二、原因分析三、解决方案总结 前言 最近在写个人项目的web端和浏览器插件&#xff0c;其中一个功能是base64和图片的转换。因为分成四个小功能&#xff0c;所以使用的iview的tabs来展示不同功能&#xff0c…

Liunx磁盘管理(上)

Liunx磁盘管理&#xff08;中&#xff09;-CSDN博客 目录 一.硬盘类型 机械硬盘&#xff08;HDD&#xff09; 固态硬盘&#xff08;SSD&#xff09; 二.插拔方式 1. 热插拔&#xff08;Hot Swapping&#xff09; 2. 冷插拔&#xff08;Cold Swapping&#xff09; 3. 模块…

回溯Backtracking Algorithm

目录 1) 入门例子 2) 全排列-Leetcode 46 3) 全排列II-Leetcode 47 4) 组合-Leetcode 77 5) 组合总和-Leetcode 39 6) 组合总和 II-Leetcode 40 7) 组合总和 III-Leetcode 216 8) N 皇后 Leetcode 51 9) 解数独-Leetcode37 10) 黄金矿工-Leetcode1219 其它题目 1) 入…

Git推送本地项目到gitee远程仓库

Git 是一个功能强大的分布式版本控制系统&#xff0c;它允许多人协作开发项目&#xff0c;同时有效管理代码的历史版本。开发者可以克隆一个公共仓库到本地&#xff0c;进行更改后将更新推送回服务器&#xff0c;或从服务器拉取他人更改&#xff0c;实现代码的同步和版本控制。…

[二叉树] 二叉树的前中后三序遍历#知二求一

标题&#xff1a;[二叉树] 二叉树的前中后三序遍历#知二求一 水墨不写bug &#xff08;图片来源于网络&#xff09; 正文开始&#xff1a; 其实这一类题就是考察对二叉树的结构理解&#xff0c;此类题目的二叉树一般通过数组传入&#xff0c;我们只需根据二叉树的就够特点对数…

Docker: 如何不新建容器 修改运行容器的端口

目录 一、修改容器的映射端口 二、解决方案 三、方案 一、修改容器的映射端口 项目需求修改容器的映射端口 二、解决方案 停止需要修改的容器 修改hostconfig.json文件 重启docker 服务 启动修改容器 三、方案 目前正在运行的容器 宿主机的3000 端口 映射 容器…