有效的独数

  • 一、题目描述:
  • 二、解决思路和代码
    • 1. 解决思路
    • 2. 代码

一、题目描述:

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

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

注意:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 空白格用 ‘.’ 表示。
  1. 示例 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. 示例 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. 解决思路

  • 分析:这道题统计一下数字 board[i][j] 在第 i 行,第 j 列,以及所在 3x3 宫格中出现的次数,如果所有的数字都只出现一次,那就是一个有效的独数。这里需要考虑一下 3x3 宫格,怎样通过行和列计算出对应的 3x3 宫格?对于 3x3 宫格的第 k 个宫格, k = i / / ( r o w / / 3 ) ∗ ( c o l / / 3 ) + j / / 3 k=i//(row//3)*(col//3)+j//3 k=i//(row//3)∗(col//3)+j//3

2. 代码

from typing import *
class Solution:def isValidSudoku(self, board: List[List[str]]) -> bool:        x33 = {0:[],1:[],2:[],3:[],4:[],5:[],6:[],7:[],8:[]}col = {0:[],1:[],2:[],3:[],4:[],5:[],6:[],7:[],8:[]}for i in range(len(board)):row = []for j in range(len(board[0])):if board[i][j]=='.': continueif board[i][j] in row: return Falserow.append(board[i][j])if board[i][j] in col[j]: return Falsecol[j].append(board[i][j])if board[i][j] in x33[i//3*3+j//3]: return Falsex33[i//3*3+j//3].append(board[i][j])return True

Leetcode36. 有效的独数相关推荐

  1. 独数游戏android程序,Android 数独小游戏

    先看看效果图 sudoku-o3.gif 数独设计思路 先看布局,我们可以看到数独由9x9的格子组成,每个格子中间有一个数字. Cell (单个格子.android 中我们可以先用TextView代替 ...

  2. leetcode 数组独数问题

    在刷题的过程中,遇到了一道题. 其题目是 现在有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次. 注意: 你需要给出一个线性时间复杂度的算法,你能在不使用额外内存空间的情况下 ...

  3. 异或的巧妙用法(比较数字是否相同/独数)

    比较两个数是否相同或者在数组(该数组同一个相同数最多2个)中找出一个单独出现的数字,我们可以用异或的方法来巧妙的解决 //C++代码 class Solution {public:int single ...

  4. 力扣中国(LeetCode) 算法题 有效独数(python)

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

  5. 独数,python,C代码实现

    简介 给定一个部分填充的9×9二维数组,目标是将数字(从1到9)分配给空单元格, 以便每个行.列包含恰好是从1到9的数字.如下图: 回溯算法 像所有其他回溯问题一样(N皇后问题),数独可以通过为空单元 ...

  6. 使用四种框架分别实现百万websocket常连接的服务器--转

    原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...

  7. 使用四种框架分别实现百万websocket常连接的服务器

    著名的 C10K 问题提出的时候, 正是 2001 年.这篇文章可以说是高性能服务器开发的一个标志性文档,它讨论的就是单机为1万个连接提供服务这个问题,当时因为硬件和软件的**,单机1万还是 一个非常 ...

  8. 虎年第一条微信,拜年啦

    ​ 数据社祝大家新的一年 玉虎临风 独数一帜 永无bug

  9. 画论17 邓椿《画继》

    目录 序 卷一 圣艺 ○徽宗皇帝 卷二 卷三 ○轩冕才贤 ○岩穴上士 卷四 卷五 ○道人衲子 ○世胄(妇女.宦者附) 卷六 ○仙佛鬼神 ○人物传写 ○山水林石 ○花竹翎毛 卷七 ○畜兽虫鱼 ○屋木舟车 ...

最新文章

  1. ODAC(V9.5.15) 学习笔记(三)TOraSession(3)
  2. oracle中to_char的用法
  3. 安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian
  4. linux中改变文件大小,Linux 改变文件大小的方法
  5. Django+Vue前后端分离项目的部署
  6. php 将颜色透明度,css中如何使颜色透明度
  7. 自定义键盘码_无线+矮轴≤299?ikbc S200 2.4G 机械键盘测评
  8. NPOI 教程 - 3.2 打印相关设置
  9. php中heredoc的使用方法
  10. 如何将知识引入机器学习模型提升泛化能力?
  11. 三种跨线程控件访问方法
  12. JVM monitoring
  13. 【破损识别】基于matlab GUI机器视觉+SVM玉米种子破损识别【含Matlab源码 1606期】
  14. 什么是网站的统计代码
  15. windows7 x64x86专业纯净版(usb3.0_nvme)2019.12.17
  16. 两种微生物并肩作战 让生物光伏系统发电能力创新高
  17. Ubuntu14.04安装微软雅黑字体
  18. iOS Safari调试webview时 页面空白或者闪退解决
  19. 计算机等级二级c语言英文,计算机等级考试二级C语言考试大纲(国外英文资料).doc...
  20. 【要找能给你解决问题的人解决问题】

热门文章

  1. python恶搞代码-Python里最搞怪的招式是啥 |初探生成器
  2. echarts地图双击区域展示下级市区县地图
  3. 分布式任务调度平台XXL-JOB的Oracle版本搭建与学习笔记
  4. C#采集三菱QPLC数据,写入MYSQL数据库
  5. 基于 spark ml NaiveBayes实现中文文本分类
  6. selenium打不开google的问题
  7. 基于java的ftp客户端_基于Java的FTP客户端软件的设计
  8. Pytorch教程入门系列8----模型搭建
  9. 浅谈Java行为参数化和Lambda表达式
  10. java 策略模式例子_java策略模式实例解析