Leetcode36. 有效的独数
有效的独数
- 一、题目描述:
- 二、解决思路和代码
- 1. 解决思路
- 2. 代码
一、题目描述:
请你判断一个 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. 解决思路
- 分析:这道题统计一下数字 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. 有效的独数相关推荐
- 独数游戏android程序,Android 数独小游戏
先看看效果图 sudoku-o3.gif 数独设计思路 先看布局,我们可以看到数独由9x9的格子组成,每个格子中间有一个数字. Cell (单个格子.android 中我们可以先用TextView代替 ...
- leetcode 数组独数问题
在刷题的过程中,遇到了一道题. 其题目是 现在有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次. 注意: 你需要给出一个线性时间复杂度的算法,你能在不使用额外内存空间的情况下 ...
- 异或的巧妙用法(比较数字是否相同/独数)
比较两个数是否相同或者在数组(该数组同一个相同数最多2个)中找出一个单独出现的数字,我们可以用异或的方法来巧妙的解决 //C++代码 class Solution {public:int single ...
- 力扣中国(LeetCode) 算法题 有效独数(python)
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- 独数,python,C代码实现
简介 给定一个部分填充的9×9二维数组,目标是将数字(从1到9)分配给空单元格, 以便每个行.列包含恰好是从1到9的数字.如下图: 回溯算法 像所有其他回溯问题一样(N皇后问题),数独可以通过为空单元 ...
- 使用四种框架分别实现百万websocket常连接的服务器--转
原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...
- 使用四种框架分别实现百万websocket常连接的服务器
著名的 C10K 问题提出的时候, 正是 2001 年.这篇文章可以说是高性能服务器开发的一个标志性文档,它讨论的就是单机为1万个连接提供服务这个问题,当时因为硬件和软件的**,单机1万还是 一个非常 ...
- 虎年第一条微信,拜年啦
数据社祝大家新的一年 玉虎临风 独数一帜 永无bug
- 画论17 邓椿《画继》
目录 序 卷一 圣艺 ○徽宗皇帝 卷二 卷三 ○轩冕才贤 ○岩穴上士 卷四 卷五 ○道人衲子 ○世胄(妇女.宦者附) 卷六 ○仙佛鬼神 ○人物传写 ○山水林石 ○花竹翎毛 卷七 ○畜兽虫鱼 ○屋木舟车 ...
最新文章
- ODAC(V9.5.15) 学习笔记(三)TOraSession(3)
- oracle中to_char的用法
- 安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian
- linux中改变文件大小,Linux 改变文件大小的方法
- Django+Vue前后端分离项目的部署
- php 将颜色透明度,css中如何使颜色透明度
- 自定义键盘码_无线+矮轴≤299?ikbc S200 2.4G 机械键盘测评
- NPOI 教程 - 3.2 打印相关设置
- php中heredoc的使用方法
- 如何将知识引入机器学习模型提升泛化能力?
- 三种跨线程控件访问方法
- JVM monitoring
- 【破损识别】基于matlab GUI机器视觉+SVM玉米种子破损识别【含Matlab源码 1606期】
- 什么是网站的统计代码
- windows7 x64x86专业纯净版(usb3.0_nvme)2019.12.17
- 两种微生物并肩作战 让生物光伏系统发电能力创新高
- Ubuntu14.04安装微软雅黑字体
- iOS Safari调试webview时 页面空白或者闪退解决
- 计算机等级二级c语言英文,计算机等级考试二级C语言考试大纲(国外英文资料).doc...
- 【要找能给你解决问题的人解决问题】