力扣-有效的数独

server/2024/11/14 1:15:46/

请你判断一个 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.ppmy.cn/server/23584.html

相关文章

双向链表专题

文章目录 目录1. 双向链表的结构2. 双向链表的实现3. 顺序表和双向链表的优缺点分析 目录 双向链表的结构双向链表的实现顺序表和双向链表的优缺点分析 1. 双向链表的结构 注意&#xff1a; 这⾥的“带头”跟前面我们说的“头节点”是两个概念&#xff0c;带头链表里的头节点…

Ansible 自动化运维

一、介绍 1、定义&#xff1a; ansible是自动化运维工具&#xff0c;基于Python开发&#xff0c;具有批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于 paramiko&#xff08;框架&#xff09; 开发的&#xff0c;并且基于模块化工作&#xff0c;本身没有批量…

Java基础知识总结(79)

waitStatus属性 每个节点与等待线程关联&#xff0c;每个节点维护一个状态waitStatus&#xff0c;waitStatus的各种值以常量的形式进行定义。 CANCELLED(1):waitStatus值为1时表示该线程节点已释放&#xff08;超时、中断&#xff09;&#xff0c;已取消的节点不会再阻塞&…

OpenShift 4 - 了解 OpenShift 是如何使用节点本地镜像缓存

《OpenShift / RHEL / DevSecOps 汇总目录》 文本已在 OpenShift 4.15 环境中进行验证。 什么是节点本地镜像缓存 一个 OpenShift 集群节点在运行 Pod 前需要先从 Registry 拉取到相关 Image。这些镜像会保存在节点本地存储中并作为缓存&#xff0c;这样该节点如果再使用这个…

偏微分方程算法之二阶双曲型方程紧差分方法

目录 一、研究目标 二、理论推导 三、算例实现 一、研究目标 前面我们已经介绍了二阶双曲型方程显式、隐式差分格式,可否像抛物型方程一样,构建更高精度的差分格式。接下来我们介绍紧差分格式。这里继续以非齐次二阶双曲型偏微分方程的初边值问题为研究对象:

NX二次开发直接加载dlx(不用加载到菜单)

一、概述 在NX二次开发中我们开发一个组合功能时常常会用到UI界面&#xff0c;在查看开发效果时必须将dlx和dll放置到Application目录中通过调用菜单&#xff0c;然后可以预览&#xff1b;当然在VS中切换dll生成路径&#xff0c;这样可以避免来回重复将dll放置到Application目录…

ElasticSearch复合查寻

FunctionScore主要是在原始查询的基础上去修改一下算分的。 而BooleanQuery布尔查询&#xff0c;它不会去修改算分&#xff0c;而是把多个查询语句组合在一起形成新查询。这些被组合的查询语句&#xff0c;我们都称之为叫子查询了&#xff0c;这些子查询&#xff0c;它的组合方…

【STM32F407+CUBEMX+FreeRTOS+lwIP之TCP记录】

STM32F407CUBEMXFreeRTOSlwIP之TCP记录 注意TCP client(socket)示例 TCP_server(socket)效果 注意 如果连接失败&#xff0c;建议关一下代理软件。 配置方面可以参考一下上一篇UDP的文章 STM32F407CUBEMXFreeRTOSlwIP之UDP记录 TCP client(socket) #define LWIP_DEMO_PORT 8…