题目

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

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

注意:

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

作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/x2f9gg/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

思路:

就是创建一个二维数组记录每一行元素的出现次数 【i】【index】i表示第i行范围是0-8,index存元素值,
一个二维数组记录每一列元素出现次数
一个三维数组记录每一个3*3方格的元素出现次数 [i/3][j/3][index]
最后判断次数大于1就说明重复了

class Solution {public boolean isValidSudoku(char[][] board) {int n = board.length;//存放每列的1-9的个数int column[][] = new int[9][9];//存放每行的1-9的个数int row[][] = new int[9][9];//存放每宫格的1-9个数int grid[][][] = 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!='.'){// index就是表示这个元素时1-9的其中一个,记得数组索引是0-8int index = c-'0'-1;row[i][index]++;column[j][index]++;grid[i/3][j/3][index]++;// 判断 如果存放的个数大于1就直接return返回falseif(row[i][index]>1 || column[j][index]>1 || grid[i/3][j/3][index]>1){return false;}}}}return true;}
}
class Solution(object):def isValidSudoku(self, board):""":type board: List[List[str]]:rtype: bool"""# 存放每行0-9的元素个数row = [[0]*9 for _ in range(9)]# 存放每列 0-9 的元素个数column = [[0]*9 for _ in range(9)]# 存放每一个3*3方格里的元素个数grid = [[[0]*9 for _ in range(3)] for _ in range(3)]# 开始遍历for i in range(9):for j in range(9):c = board[i][j]# 先判断是否为.不是.再进行比较if c!='.':# 索引是整数 数独里的数字是1-9作为索引就是0-8index = int(c) - 1# 如果第i行的这个值出现一次就加一row[i][index]+=1column[j][index]+=1grid[i/3][j/3][index]+=1# 判断计数里有没有大于1的,大于一说明有重复返回falseif row[i][index]>1 or column[j][index]>1 or grid[i/3][j/3][index]>1:return Falsereturn True

【力扣】【初级算法】【数组10】有效的数独相关推荐

  1. 力扣:探索初级算法——数组篇——有效的数独

    题目:有效的数独 代码(C语言) bool isValidSudoku(char** board, int boardSize, int* boardColSize){int row[9][10] = ...

  2. 力扣--初级算法之加一

    加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: ...

  3. 力扣--初级算法-1

    删除排序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) ...

  4. 【初级算法】10.有效的数独

    题目: 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可.数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线 ...

  5. [算法]力扣刷题-初级算法 - 数组(三)(数组篇完结) [两数之和] [有效的数独] [旋转图像]

    初级算法 - 数组篇完结: 初级算法 - 数组(一): https://blog.csdn.net/weixin_43854928/article/details/121315702 初级算法 - 数 ...

  6. 力扣练习题(数组中数据反转)

    力扣练习题(数组中数据反转) 要求:int[] arr = {12,23,34,45,56,67,78,89,90}; 变为:int[] arr = {90,89,78,67,56,45,34,23, ...

  7. 力扣 两个数组的交集

    力扣 两个数组的交集 题目描述 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:num ...

  8. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  9. C++算法学习(力扣:1122. 数组的相对排序)

    给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...

  10. LeetCode 探索初级算法-数组:10 有效的数独-20200321

    10 有效的数独-20200321 题目 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一 ...

最新文章

  1. 转:从零开始做app需要做的事情列表
  2. Java 洛谷 P1909 买铅笔讲解
  3. centos删除php_Linux CentOS完全卸载PHP
  4. cap流程图_化工工艺流程图制图图例汇编.pdf
  5. missforest_missforest最佳丢失数据插补算法
  6. 设python中有模块m、如果希望同时导入m中的所有成员_python-模块
  7. linux上安装telnet服务器:linux vmvare虚拟机 安装telnet redhat9
  8. 【LeetCode】7. Reverse Integer
  9. 数据库异常---ORA-01436: 用户数据中的 CONNECT BY loop in user data 循环
  10. 中国特技飞机市场趋势报告、技术动态创新及市场预测
  11. 如何加入github开源项目!
  12. java简单的思维逻辑训练_简单的代码,适合初学者,锻炼逻辑思维能力,可以练习练习!...
  13. [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
  14. 强化学习与环境不确定_不确定性意识强化学习
  15. SQLHelp sql数据库的DAL
  16. 海康威视 摄像头 RTMP 转 FLV
  17. python连接阿里云数据库_Python连接MySQL数据库教程演示
  18. C语言实现-航空订票系统(飞机订票系统)单机版联网版
  19. 图像去噪序列——BM3D图像去噪模型实现
  20. 暴风影音5完整版(集成Real解码器) 增强去广告版

热门文章

  1. C语言调试教程总结(以visual studio和Dev C++为例)
  2. USB CCID理解
  3. pomodoro源代码
  4. win10 设备管理器中没端口选项解决方法
  5. 暑假规划及小学期总结
  6. C:/Inetpub/AdminsScripts的常用语法
  7. win10网线插上显示的ipv6的服务器,win10如何开启IPV6及WIN10无法上ipv6的解决方法
  8. post 防篡改_Cookie防篡改机制
  9. C#.NET面试题:一批编号为1-100全部开关朝上(开)的灯进行以下操作: 开关编号凡是1的倍数反方向拨一次开关;若该编号也是2的倍数反方向又拨一次开关;若该编号又是3的倍数反方向又拨一次开关……
  10. 中医针灸学综合练习题库【11】