算法第三十四天-有效数独

news2024/12/21 23:43:35

有效数独

题目要求

在这里插入图片描述

解题思路

一个简单的方法是,遍历9*9书读三次,以确保:

  • 行中没有重复的数字
  • 列中没有重复的数字
  • 3*3子数独中没有重复的数字
    但是,实际上,所有的一切都以可以在一次迭代中完成
    可以使用box_index = (row/3*3 + columns / 3,其中/是整出
    如何确保行、列、子数独没有重复项
    可以利用value -> count哈希映射来跟踪所有已经遇到的值

代码

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        # init data
        rows = [{} for i in range(9)]
        columns = [{} for i in range(9)]
        boxes = [{} for i in range(9)]
        # validate a board
        for i in range(9):
            for j in range(9):
                num = board[i][j]
                if num != '.':
                    num = int(num)
                    box_index = (i // 3 ) * 3 + j // 3
                    
                    # keep the current cell value
                    rows[i][num] = rows[i].get(num, 0) + 1
                    columns[j][num] = columns[j].get(num, 0) + 1
                    boxes[box_index][num] = boxes[box_index].get(num, 0) + 1
                    
                    # check if this value has been already seen before
                    if rows[i][num] > 1 or columns[j][num] > 1 or boxes[box_index][num] > 1:
                        return False         
        return True

复杂度分析

时间复杂度: O ( N ) O(N) O(N)
空间复杂度: O ( 1 ) O(1) O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1551695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes Gateway API 介绍

Kubernetes Gateway API 诞生背景 在 kubernetes 中,流量的治理主要分为两个部分: 南北向流量东西向流量 南北向流量(NORTH-SOUTH traffic) 在计算机网络中,南北向流量通常指数据流量从一个**内部网络(…

20231911马星 2022-2023-2 《网络攻防实践》实验四

1.实践内容 在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。 1.1 ARP欺骗攻击: (1)ARP欺骗(ARP spoofing&#xff09…

【算法-PID】

算法-PID ■ PID■ 闭环原理■ PID 控制流程■ PID 比例环节( Proportion)■ PID 积分环节(Integral)■ PID 微分环节(Differential) ■ PID PID 分别是 Proportion(比例)、 Integr…

如何购买小程序模板开发企业小程序

在当今数字化时代,小程序已成为企业展示与营销的重要工具。购买一个小程序模板,来快速上线自己的企业小程序,已成为当前最流行且性价比最高的开发方式。 乔拓云网站提供了丰富的小程序模板资源,无论你需要哪种风格或功能的小程序&…

WOT全球技术创新大会2024北京站:技术派与市场派共话AIGC新未来

WOT全球技术创新大会2024将在北京盛大开幕,聚焦AIGC时代的软件工程新范式、AI Agent探索与应用、多模态AIGC前沿探索以及大模型部署与应用等核心议题。此次大会将促进技术信仰派与市场信仰派间的深度对话与交流,共同探讨AIGC技术的未来发展方向。 在过去…

【Java程序设计】【C00351】基于Springboot的疫情居家办公系统(有论文)

基于Springboot的疫情居家办公系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 🍅文末点击卡片获取源码🍅 开发环境 运行环境:推荐jdk1.8; 开发工具:eclipse以及i…

Flask python 开发篇:上传文件(在指定目录下创建文件夹)

flask上传文件以及常见问题 一、flask文档上传文件的介绍二、上传文件的实现2.1、生成一个from表单,用来提交图片2.2、编写上传的逻辑 三、运行代码、以及常见异常四、写在最后 一、flask文档上传文件的介绍 Flask上传文件的文档介绍,文件上传的基本思想…

快递鸟物流轨迹地图API接口,包裹行程尽在掌握!

在快节奏的现代生活中,物流行业作为连接生产者与消费者的桥梁,其重要性不言而喻。随着电子商务的飞速发展,人们对物流信息的实时性和准确性要求越来越高。为了满足这一需求,快递鸟物流轨迹地图API应运而生,为广大用户提…

WIFI驱动移植实验: wireless tools 工具测试

一. 简介 前面一篇文章交叉编译了 wireless tools 工具,并移植到开发板文件系统上。文章如下: WIFI驱动移植实验: wireless tools 工具移植-CSDN博客 本文对 所移植的操作 WIFI设备的工具 wireless tools进行测试。确认是否可以使用。 二…

【浅尝C++】使用模板实现泛型编程第一弹=>函数模板/类模板/模板匹配原则/函数模板原理

🏠专栏介绍:浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 🚩一些备注:之前的文章有点杂乱,这里将前面的知识点重新组织了,避免了过多冗余的废话。 🎯每日努力一点点,技术变化看…

如何删除Excel中的空白行?这里提供详细步骤

要从数据集中删除所有空白行吗?如果是这样,Microsoft Excel提供自动和手动方法来清除空白行并向上移动数据。下面是如何使用这些方法。 删除空白行时,Excel会删除整行并上移数据,以便数据集中不再有空行。记住,你也可…

linux下使用迅雷的完美办法(网络版免费),其他下载工具

迅雷有自家服务器的支持,因此,其他下载器,可能难以匹敌 ? linux下使用迅雷的完美办法(免费) https://blog.csdn.net/lqrensn/article/details/8853949 网络版 Linux下安装并使用迅雷 https://www.lxlin…

【微服务】Nacos(注册中心)

文章目录 1.基本介绍1.概述2.Nacos下载和运行(java8/maven3.2.x)1.解压到没有中文路径的2.双击startup3.浏览器输入http://192.168.242.124:8848/nacos4.用户名和密码为nacos5.cmd输入netstat -anb | more查看监听端口 2.创建Nacos服务提供者 100041.项目…

人工智能在产业中应用--生成智能

二、生成式人工智能 前面介绍了很多人工智能的应用,接下来部分我们会介绍当前正在进行的生成智能。生成智能和以往的人工智能有什么区别,个人觉得主要区别就在于“度”。在表现上就是以前的人工智能更多是利用既有的数据集分布挖掘和解决在这个数据集下…

WPF 命名空间解释

在C#中有命名空间的概念,我们可以使用using引入,就可以使用其中的类,在xaml中,也同样有命名空间,在window标签中用xmlns声明的这几行,这就是本页面引入的命名空间。 一般的情况下,我们引入命名空…

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议) 本文目的前置知识点TCP协议简介主要特性通信流程1. 建立连接的过程(三次握手,243)1.1 为什么要三次握手,两次不行吗? 2. 释放连接的过程(…

在Linux上使用nginx反向代理部署Docker网站

在政务云上部署Web环境,为了保证服务器安全,甲方只开放一个端口且只允许使用https协议进行访问,经过思考,决定使用docker部署网站,使用nginx反向代理,通过不同的二级域名访问不同的端口。 1 使用docker部署…

每日一题系列 —— 说一下JS的数据类型。/ JavaScript的数据类型有哪些?

面试官:说一下JS的数据类型。/ JavaScript的数据类型有哪些? 答:JavaScript的数据类型分为两种:①基本数据类型;②引用数据类型 其中基本数据类型包括: (1)数值(Number…

ubuntu的常用操作

一、用户 1.1 创建新用户 1.1.1 添加、修改、删除 1.2 超级用户root 切换到root用户,有全部权限,可以直接使用任何命令。 我们在什么时候才会切换到root用户进行操作呢?当我们使用某些命令,不想前面一直加sudo的话,…

大型DMP系统

前言 大家好,我是jiantaoyab,这是我作为学习笔记总结应用篇第一篇,本章大量的参考了别的博主的文章。 我们今天就先从搭建一个大型的 DMP 系统开始,利用组成原理里面学到的存储器知识,来做选型判断,从而更…