力扣中国(LeetCode) 算法题 有效独数(python)
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
- 数字
1-9
在每一行只能出现一次。 - 数字
1-9
在每一列只能出现一次。 - 数字
1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次。
上图是一个部分填充的有效的数独。
数独部分空格内已填入了数字,空白格用 '.'
表示。
解法1>:问题循环嵌套过多,时间复杂度不友好
class Solution:def isValidSudoku(self, board: List[List[str]]) -> bool:series = board# 列循环x = []for colum in range(len(series)): # 0~9# 行循环row_l = []colum_l = []for row in range(len(series)):# 循环 值if series[colum][row].isnumeric():row_l.append(series[colum][row])if series[row][colum].isnumeric():colum_l.append(series[row][colum])if len(row_l) != len(set(row_l)) or len(colum_l) != len(set(colum_l)):print('行', row_l, '列', colum_l)return Falsefor colum in range(0, 9, 3):matrx = series[colum:colum + 3]for row in range(0, 9, 3):li = []for value in matrx:# print(value[row:row + 3])for number in value[row:row + 3]:if number.isnumeric():li.append(number)if len(li) != len(set(li)):print('3x3', li)return Falsereturn True
解法2>:优化
def jiu():b = {}h_c = {i:[] for i in range(9)}l_c = {i:[] for i in range(9)}g_c = {i:[] for i in range(9)}for i in a:h = a.index(i) #行for index,j in enumerate(i):if j != '.':l = index # 3 4 5 4if l in [0,1,2]:g = 0 + h//3*3elif l in [3,4,5]:g = 1 + h//3*3else:g = 2 + h//3*3if j not in h_c[h]:h_c[h].append(j)elif j in h_c[h]:print(j)return(h,l,j)if j not in l_c[l]:l_c[l].append(j)elif j in l_c[l]:print(j)return(h,l,j)if j not in g_c[g]:g_c[g].append(j)elif j in g_c[g]:print(j)return(h,l,j)
jiu()
力扣(中国):https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/30/
力扣中国(LeetCode) 算法题 有效独数(python)相关推荐
- C#实现力扣双周赛算法题:以组为单位订音乐会的门票订购
目录: 前言: 一,算法题目描述 二,基本概念理解: 三,例子引入分析 四,代码解释 (1)安排座位函数 (2)查询函数 (2)求出1到RPS内的最小下标 (3)gather函数 (4)scatter ...
- leetcode算法题--最长数对链
原题链接:https://leetcode-cn.com/problems/maximum-length-of-pair-chain/ 1.动态规划 dp[i]表示第i个位置最长的数对链的长度 状态转 ...
- leetcode算法题--回文数
原文链接:https://leetcode-cn.com/problems/palindrome-number/ bool isPalindrome(int x) {if(x<0||(x%10= ...
- python【力扣LeetCode算法题库】220-存在重复元素 III
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: 输入: ...
- python【力扣LeetCode算法题库】219 -存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...
- python【力扣LeetCode算法题库】217-存在重复元素
给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出: true ...
- python【力扣LeetCode算法题库】257- 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", &quo ...
- python【力扣LeetCode算法题库】10-正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 ...
- Python爬虫抓取LeetCode题解,获取力扣中国(leetcode-cn.com)提交代码,自动保存submission到本地,同步上传到github
力扣中国虽然可以和github绑定账号,但是我提交的题解并不能同步到github上-- 辛辛苦苦三个月,勤勤恳恳四百题,leetcode一片绿,github万里白. 手动上传是不可能手动上传的,这辈子 ...
最新文章
- [转]mysql性能的检查和调优方法
- 用requests获取网页源代码 python-Python3使用requests包抓取并保存网页源码的方法
- Qt编译过程中出现的问题
- 学习笔记:The Log(我所读过的最好的一篇分布式技术文章
- SAP CRM webclient ui里直接编写原生的JavaScript
- java集成lucene_将Lucene搜索集成到应用程序中
- java子类怎么编译_java – 无法编译从基类实现抽象方法的子类
- Chrome 浏览器创建网站快捷方式(加入收藏夹)代码
- C++相对于C语言更加规范(1)
- 24. Navigator taintEnabled() 方法
- 前端实战项目:前端框架Vue3.0项目教程(一)Vue3.0环境的搭建
- vue遍历Map集合
- leaflet加载谷歌影像地图、天地图影像地图、天地图影像注记
- Swift最新的AES加密解密
- (转)cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
- python中spider的用法_Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法
- build.gradle Failed to resolve:me.relex:circleindicator:1.1.5
- 房产中介 二手房中介小程序 一流开发 抓住小程序热潮
- xcode和macos对应版本参考
- “数”峰亮剑,优炫数据库助力国产数据库算法对抗赛成功举办
热门文章
- c语言中,从键盘输入一个长方体的长宽高,用函数实现求长方体的体积,由主函数调用该函数,要求长方体的长、宽、高从主函数输入,长方体的体积作为函数返回值。
- Spring Boot 实现定时任务
- 用Python实现斐波那契数列代码
- 试卷代号:4022 2021年春季学期期末统一考试金融风险概论 试题(开卷)
- [渝粤教育] 中国矿业大学 货币金融学 参考 资料
- The annotation of C++ primer {藤原豆腐坊自家用}
- android studio git 错误 unable to read askpass
- Bilateral attention network for RGB-D salient object detection阅读笔记
- python判断一个数是奇数还是偶数_在python中检查一个数字是奇数还是偶数
- 合同和协议的区别_你签的是合同还是协议?他们的法律效力有区别吗?