LeetCode 每日一题 2025/5/5-2025/5/11

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 5/5 790. 多米诺和托米诺平铺
      • 5/6 1920. 基于排列构建数组
      • 5/7 3341. 到达最后一个房间的最少时间 I
      • 5/8 3342. 到达最后一个房间的最少时间 II
      • 5/9 3343. 统计平衡排列的数目
      • 5/10 2918. 数组的最小相等和
      • 5/11 1550. 存在连续三个奇数的数组


5/5 790. 多米诺和托米诺平铺

dp
假设dp[i][x]为第i列状态 0一个没有铺 1上方格子被铺 2下方格子被铺 3两个格子都被铺
dp[i][0] = dp[i-1][3]
dp[i][1] = dp[i-1][0]+dp[i-1][2]
dp[i][2] = dp[i-1][0]+dp[i-1][1]
dp[i][3] = dp[i-1][0]+dp[i-1][1]+dp[i-1][2]+dp[i-1][3]

def numTilings(n):""":type n: int:rtype: int"""MOD=10**9+7dp = [[0]*4 for _ in range(n+1)]dp[0][3]=1for i in range(1,n+1):dp[i][0] = dp[i-1][3]dp[i][1] = (dp[i-1][0]+dp[i-1][2])%MODdp[i][2] = (dp[i-1][0]+dp[i-1][1])%MODdp[i][3] = (dp[i-1][0]+dp[i-1][1]+dp[i-1][2]+dp[i-1][3])%MODreturn dp[n][3]

5/6 1920. 基于排列构建数组

按照要求构建

def buildArray(nums):""":type nums: List[int]:rtype: List[int]"""return [nums[nums[i]] for i in range(len(nums))]

5/7 3341. 到达最后一个房间的最少时间 I

ans[x][y]记录到达x,y位置的最少时间
dijkstra 根据x,y得到到他周围最短时间

def minTimeToReach(moveTime):""":type moveTime: List[List[int]]:rtype: int"""import heapqn,m=len(moveTime),len(moveTime[0])ans=[[float("inf")]*m for _ in range(n)]ans[0][0]=0steps=[(1,0),(-1,0),(0,1),(0,-1)]l=[(0,0,0)]while True:d,i,j=heapq.heappop(l)if i==n-1 and j==m-1:return dif d>ans[i][j]:continuefor dx,dy in steps:x,y=i+dx,j+dyif 0<=x<n and 0<=y<m:newd = max(d,moveTime[x][y])+1if newd<ans[x][y]:ans[x][y]=newdheapq.heappush(l, (newd,x,y))

5/8 3342. 到达最后一个房间的最少时间 II

ans[x][y]记录到达x,y位置的最少时间
dijkstra 根据x,y得到到他周围最短时间
每走一步耗时在1,2之间变化 根据位置和的奇偶性可以判断 x+y偶数耗时1 奇数耗时2

def minTimeToReach(moveTime):""":type moveTime: List[List[int]]:rtype: int"""import heapqn,m=len(moveTime),len(moveTime[0])ans=[[float("inf")]*m for _ in range(n)]ans[0][0]=0steps=[(1,0),(-1,0),(0,1),(0,-1)]l=[(0,0,0)]while True:d,i,j=heapq.heappop(l)if i==n-1 and j==m-1:return dif d>ans[i][j]:continueadd = (i+j)%2for dx,dy in steps:x,y=i+dx,j+dyif 0<=x<n and 0<=y<m:newd = max(d,moveTime[x][y])+1+addif newd<ans[x][y]:ans[x][y]=newdheapq.heappush(l, (newd,x,y))

5/9 3343. 统计平衡排列的数目

https://leetcode.cn/problems/count-number-of-balanced-permutations/solutions/3670620/tong-ji-ping-heng-pai-lie-de-shu-mu-by-l-ki3d/?envType=daily-question&envId=2025-05-09

def countBalancedPermutations(num):""":type num: str:rtype: int"""from collections import Counterimport mathMOD=10**9+7num=list(map(int,num))total=sum(num)if total%2:return 0target = total//2cnt = Counter(num)n=len(num)maxOdd = (n+1)//2psum=[0]*11for i in range(9,-1,-1):psum[i]=psum[i+1]+cnt[i]mem={}def dfs(pos,cur,oddcnt):if (pos,cur,oddcnt) in mem:return mem[(pos,cur,oddcnt)]if oddcnt<0 or psum[pos]<oddcnt or cur>target:mem[(pos,cur,oddcnt)]=0return 0if pos>9:mem[(pos,cur,oddcnt)]=int(cur==target and oddcnt==0)return int(cur==target and oddcnt==0)evencnt=psum[pos]-oddcntans=0for i in range(max(0,cnt[pos]-evencnt),min(cnt[pos],oddcnt)+1):ways=math.comb(oddcnt,i)*math.comb(evencnt,cnt[pos]-i)%MODans += ways*dfs(pos+1, cur+i*pos, oddcnt-i)mem[(pos,cur,oddcnt)]=ans%MODreturn ans%MODreturn dfs(0,0,maxOdd)

5/10 2918. 数组的最小相等和

正整数最小为1
统计数组当前和 以及0的个数
将所有0变为1 返回较大的值
如果较小数组中没有0 则无法相等

def minSum(nums1, nums2):""":type nums1: List[int]:type nums2: List[int]:rtype: int"""s1,s2=sum(nums1),sum(nums2)z1,z2=nums1.count(0),nums2.count(0)s1+=z1s2+=z2if s1>s2:if z2==0:return -1else:return s1elif s1<s2:if z1==0:return -1else:return s2return s1

5/11 1550. 存在连续三个奇数的数组

依次判断 i-1,i,i+1是否是奇数

def threeConsecutiveOdds(arr):""":type arr: List[int]:rtype: bool"""n=len(arr)for i in range(1,n-1):if arr[i-1]%2 and arr[i]%2 and arr[i+1]%2:return Truereturn False

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

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

相关文章

pytest自动化测试执行环境切换的两种解决方案

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&#xff0c;比如多套测试环境、预上线环境、UAT环境、线上环…

visual studio 2015 安装闪退问题

参考链接&#xff1a; VS2012安装时启动界面一闪而过问题解决办法 visual studio 2015 安装闪退问题

RocketMQ Kafka区别

架构 ZooKeeper&#xff1a;管理 Broker 注册、分区 Leader 选举及消费者组状态。Broker&#xff1a;存储 Partition数据&#xff0c;每个 Partition 为独立日志文件。Producer/Consumer&#xff1a;通过 ZooKeeper获取路由信息&#xff0c;实现消息分发与消费。 NameServer&am…

MySQL进阶篇2_SQL优化、锁

文章目录 1 SQL优化1.1插入数据优化1.2主键优化页分裂页合并主键设计原则 1.3order by设计优化1.4group by设计优化小理解 1.5limit设计优化顺序IO和随机IO小疑惑 1.6count设计优化1.7update优化关于隐式事务事务的DML操作 锁全局锁表级锁表锁元数据锁意向锁 行级锁锁的释放条件…

如何测试 esp-webrtc-solution_solutions_doorbell_demo 例程?

软件准备 esp-webrtc-solution/solutions/doorbell_demo 例程 此例程集成了 WebSocket 传输视频流的应用 硬件准备 ESP32P4-Function-Ev-Board 环境搭建 推荐基于 esp-idf v5.4.1 版本的环境来编译此例程 若编译时出现依赖的组件报错&#xff0c;可进行如下修改&#xff…

TransmittableThreadLocal:穿透线程边界的上下文传递艺术

文章目录 前言一、如何线程上下文传递1.1 ThreadLocal单线程1.2 InheritableThreadLocal的继承困境1.3 TTL的时空折叠术 二、TTL核心设计解析2.1 时空快照机制2.2 装饰器模式2.3 采用自动清理机制 三、设计思想启示四、实践启示录结语 前言 在并发编程领域&#xff0c;线程上下…

【数据结构】——栈

一、栈的概念和结构 栈其实就是一种特殊的顺序表&#xff0c;其只允许在一端进出&#xff0c;就是栈的数据的插入和删除只能在一端进行&#xff0c;进行数据的插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的元素遵循先进后出LIFO&#xff08;Last InFirst O…

大数据技术全景解析:Spark、Hadoop、Hive与SQL的协作与实战

引言&#xff1a;当数据成为新时代的“石油” 在数字经济时代&#xff0c;数据量以每年50%的速度爆发式增长。如何高效存储、处理和分析PB级数据&#xff0c;成为企业竞争力的核心命题。本文将通过通俗类比场景化拆解&#xff0c;带你深入理解四大关键技术&#xff1a;Hadoop、…

Android13 权限管理机制整理

一、概述 权限机制作为Android 系统安全的保证,很重要,这里整理一下 权限机制中framework 部分,selinux等其他的Android权限机制不在本次讨论范围内 二、个版本差异分类 Android13 Android12 Android11 及以下 抛开版本差异权限机制分为两大类 一类是之前apk在Android6.0…

MySQL的Order by与Group by优化详解!

目录 前言核心思想&#xff1a;让索引帮你“排好序”或“分好组”Part 1: ORDER BY 优化详解1.1 什么是 Filesort&#xff1f;为什么它慢&#xff1f;1.2 如何避免 Filesort&#xff1f;—— 利用索引的有序性1.3 EXPLAIN 示例 (ORDER BY) Part 2: GROUP BY 优化详解2.1 什么是…

awesome-digital-human本地部署及配置:打造高情绪价值互动指南

在数字化交互的浪潮中&#xff0c;awesome-digital-human-live2d项目为我们打开了本地数字人互动的大门。结合 dify 聊天 api&#xff0c;并借鉴 coze 夸夸机器人的设计思路&#xff0c;能为用户带来充满情绪价值的交互体验。本文将详细介绍其本地部署步骤、dify 配置方法及情绪…

[ctfshow web入门] web68

信息收集 highlight_file被禁用了&#xff0c;使用cinclude("php://filter/convert.base64-encode/resourceindex.php");读取index.php&#xff0c;使用cinclude("php://filter/convert.iconv.utf8.utf16/resourceindex.php");可能有些乱码&#xff0c;不…

计算机网络:深度解析基于链路状态的内部网关协议IS-IS

IS-IS(Intermediate System to Intermediate System)路由协议详解 IS-IS(Intermediate System to Intermediate System)是一种基于链路状态的内部网关协议(IGP),最初由ISO为OSI(开放系统互连)模型设计,后经扩展支持IP路由。它广泛应用于大型运营商网络、数据中心及复…

SEGGER项目

SystemView 查看版本, 查看SEGGER官网&#xff0c;release时间是2019-12-18日, 而3.12.0的版本日期是2020-05-04 #define SEGGER_SYSVIEW_MAJOR 3 #define SEGGER_SYSVIEW_MINOR 10 #define SEGGER_SYSVIEW_REV 0SEGGER EMBEDDED Studio 根据S…

Linux——Mysql索引和事务

目录 一&#xff0c;Mysql索引介绍 1&#xff0c;索引概述 1&#xff0c;索引的优点 2&#xff0c;索引的缺点 2&#xff0c;索引作用 3&#xff0c;索引分类 普通索引 唯一索引 主键索引 组合索引 全文索引 4&#xff0c;查看索引 5&#xff0c;删除索引 6&…

【Web】LACTF 2025 wp

目录 arclbroth lucky-flag whack-a-mole arclbroth 看到username为admin能拿到flag 但不能重复注册存在的用户 这题是secure-sqlite这个库的问题&#xff0c;底层用的是C&#xff0c;没处理好\0字符截断的问题 &#xff08;在 Node.js 中&#xff0c;由于其字符串表示方式…

访问者模式(Visitor Pattern)详解

文章目录 1. 访问者模式概述1.1 定义1.2 基本思想 2. 访问者模式的结构3. 访问者模式的UML类图4. 访问者模式的工作原理5. Java实现示例5.1 基本实现示例5.2 访问者模式处理复杂对象层次结构5.3 访问者模式在文件系统中的应用 6. 访问者模式的优缺点6.1 优点6.2 缺点 7. 访问者…

matlab介绍while函数

MATLAB 中的 while 语句介绍 在 MATLAB 中&#xff0c;while 语句是一种循环结构&#xff0c;用于在满足特定条件时反复执行一段代码块。与 for 循环不同&#xff0c;while 循环的执行次数是动态的&#xff0c;取决于循环条件是否为真。 语法 while condition% 循环体代码 e…

数字信号处理|| 快速傅里叶变换(FFT)

一、实验目的 &#xff08;1&#xff09;加深对快速傅里叶变换&#xff08;FFT&#xff09;基本理论的理解。 &#xff08;2&#xff09;了解使用快速傅里叶变换&#xff08;FFT&#xff09;计算有限长序列和无限长序列信号频谱的方法。 &#xff08;3&#xff09;掌握用MATLA…

.Net Mqtt协议-MQTTNet(一)简介

一、MQTTNet 简介 MQTTnet 是一个高性能的MQTT类库&#xff0c;支持.NET Core和.NET Framework。 二、MQTTNet 原理 MQTTnet 是一个用于.NET的高性能MQTT类库&#xff0c;实现了MQTT协议的各个层级&#xff0c;包括连接、会话、发布/订阅、QoS&#xff08;服务质量&#xff0…