LeetCode 每日一题 2025/5/12-2025/5/18
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
目录
- 5/12 2094. 找出 3 位偶数
- 5/13 3335. 字符串转换后的长度 I
- 5/14 3337. 字符串转换后的长度 II
- 5/15 2900. 最长相邻不相等子序列 I
- 5/16 2901. 最长相邻不相等子序列 II
- 5/17 75. 颜色分类
- 5/18 1931. 用三种不同颜色为网格涂色
5/12 2094. 找出 3 位偶数
统计每个数字个数
def findEvenNumbers(digits):""":type digits: List[int]:rtype: List[int]"""nums=[0]*10for num in digits:nums[num]+=1ans=[]for a in range(1,10):if nums[a]>0:nums[a]-=1for b in range(10):if nums[b]>0:nums[b]-=1for c in range(0,10,2):if nums[c]>0:ans.append(100*a+10*b+c)nums[b]+=1nums[a]+=1return ans
5/13 3335. 字符串转换后的长度 I
统计各个字符出现个数0~25
每一次将个数往右移动 如果在最后则将0,1 +1
def lengthAfterTransformations(s, t):""":type s: str:type t: int:rtype: int"""MOD=10**9+7cnt=[0]*26for c in s:cnt[ord(c)-ord("a")]+=1for _ in range(t):nxt=[0]*26nxt[0]=cnt[25]nxt[1]=cnt[25]+cnt[0]for i in range(2,26):nxt[i]=cnt[i-1]cnt=nxtans=sum(cnt)%MODreturn ans
5/14 3337. 字符串转换后的长度 II
矩阵快速幂
def lengthAfterTransformations(s, t, nums):""":type s: str:type t: int:type nums: List[int]:rtype: int"""from collections import Counter MOD=10**9+7def mul(a,b):return [[sum(x*y for x,y in zip(row,col))%MOD for col in zip(*b)]for row in a]def pow_mul(a,n,f):ans = fwhile n:if n&1:ans=mul(a,ans)a=mul(a,a)n>>=1return ansm=[[0]*26 for _ in range(26)]for i,c in enumerate(nums):for j in range(i+1,i+c+1):m[i][j%26]=1f=[[1] for _ in range(26)]mt=pow_mul(m, t, f)ans=0for c,cnt in Counter(s).items():ans+=mt[ord(c)-ord('a')][0]*cntreturn ans%MOD
5/15 2900. 最长相邻不相等子序列 I
将groups看作是一个01字符串 相同的为一部分
即从各个部分中取一个即可
001011 取0101
def getLongestSubsequence(words, groups):""":type words: List[str]:type groups: List[int]:rtype: List[str]"""n=len(groups)ans=[]for i,c in enumerate(groups):if i==n-1 or c!=groups[i+1]:ans.append(words[i])return ans
5/16 2901. 最长相邻不相等子序列 II
dp[i]代表i结尾最长子序列长度
j从0~i-1 找到最大的dp[i]=max(dp[i],dp[j]+1)
ham(a,b)用来求a,b的汉明距离
pre[i]代表当前dp[i]的前一个位置 方便最后倒序得到结果
def getWordsInLongestSubsequence(words, groups):""":type words: List[str]:type groups: List[int]:rtype: List[str]"""n=len(groups)dp=[1]*npre=[-1]*nmaxind=0def ham(a,b):if len(a)!=len(b):return Falsediff=0for i in range(len(a)):if a[i]!=b[i]:diff+=1if diff>1:return Falsereturn diff==1for i in range(1,n):for j in range(i):if ham(words[i],words[j]) and dp[j]+1>dp[i] and groups[i]!=groups[j]:dp[i]=dp[j]+1pre[i]=jif dp[i]>dp[maxind]:maxind=ians=[]i=maxindwhile i>=0:ans = [words[i]]+ansi=pre[i]return ans
5/17 75. 颜色分类
设定三个坐标i,j,k
i用来记录可与0调换的位置 j用来记录可与2调换的位置 k用来扫描整个list
当k扫描到2时 将这个2与j上的调换 将2放到后面 j往前移 (此时不知道被调过来的数 需要重新扫描 所以k不需要往后移)
当k扫描到0时 将这个0与i上的调换 将0放到后面 i,k往后移 (此时调过来的数是在前面已经扫描过的 所以k往后移)
当k扫描到1时 不做处理 k往后移
def sortColors(nums):""":type nums: List[int]:rtype: void Do not return anything, modify nums in-place instead."""i = 0k = 0j = len(nums)-1while k<=j:if nums[k]==2:nums[k],nums[j] = nums[j],nums[k]j-=1elif nums[k]==0:nums[i],nums[k] = nums[k],nums[i]k+=1i+=1else:k+=1
5/18 1931. 用三种不同颜色为网格涂色
用m位三进制数表示三种颜色的可能
在valid中存储没有相邻同色的三进制数
nxt[i]记录第i种排列后可以接的其他排列
dfs(i,j) 第i行选择第j种排列的方案数量 记忆化搜索
def colorTheGrid(m, n):""":type m: int:type n: int:rtype: int"""pow3=[3**i for i in range(m)]valid=[]for color in range(3**m):for i in range(1,m):if color//pow3[i]%3==color//pow3[i-1]%3:breakelse:valid.append(color)nv=len(valid)nxt=[[] for _ in range(nv)]for i,c1 in enumerate(valid):for j,c2 in enumerate(valid):for p3 in pow3:if c1//p3%3==c2//p3%3:breakelse:nxt[i].append(j)MOD=10**9+7mem={}def dfs(i,j):if (i,j)in mem:return mem[(i,j)]if i==0:return 1ans=sum(dfs(i-1,k) for k in nxt[j])%MODmem[(i,j)]=ansreturn ansreturn sum(dfs(n-1,j) for j in range(nv))%MOD
相关文章:
LeetCode 每日一题 2025/5/12-2025/5/18
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 5/12 2094. 找出 3 位偶数5/13 3335. 字符串转换后的长度 I5/14 3337. 字符串转换后的长度 II5/15 2900. 最长相邻不相等子序列 I5/16 2901. 最长相邻不相等子序列 II5/17 …...

Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览
文章目录 前言SceneCaptureComponent2D实现步骤新建渲染目标新建材质UI控件激活3DPreview鼠标拖动旋转模型最后前言 我们在(电商展示/角色预览/装备查看)等应用场景中,经常会看到这种3D展示的页面。 即使用相机捕获一个3D的模型的视图,然后把这个视图显示在一个UI画布上,…...

电机控制杂谈(25)——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?
1. 背景 最近都在写论文回复信。有个审稿人问了一个问题——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?同时,为什么相电流五、七次谐波电流会在dq基波旋转坐标系构成六次谐波电流? 回答这个问题挺简单的,但在网…...

多模态大语言模型arxiv论文略读(七十八)
AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ➡️ 论文标题:AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ➡️ 论文作者:Zhen Xing, Qi Dai, Zejia Weng, Zuxuan W…...
项目中把webpack 打包改为vite 打包
项目痛点: 老vu e-cli1创建的项目,项目是ERP系统集成了很多很多管理,本地运行调试的时候,每次修改代码都需要等待3分钟左右的编译时间,严重影响开发效率. 解决方案: 采用vite构建项目工程 方案执行 第一步 使用vite脚手架构件一个项目,然后把build文件自定义的编译逻辑般到…...

【C语言】易错题 经典题型
出错原因:之前运行起来的可执行程序没有关闭 关闭即可 平均数(average) 输入3个整数,输出它们的平均值,保留3位小数。 #include <stdio.h> int main() {int a, b, c;scanf("%d %d %d", &a, &…...
哈夫曼编码:数据压缩的优雅艺术
哈夫曼编码:数据压缩的优雅艺术 在数字信息时代,数据压缩技术扮演着至关重要的角色。其中,哈夫曼编码(Huffman Coding)作为一种经典的无损压缩算法,以其简洁优雅的设计和卓越的压缩效率而闻名。本文将通过…...

说一说Node.js高性能开发中的I/O操作
众所周知,在软件开发的领域中,输入输出(I/O)操作是程序与外部世界交互的重要环节,比如从文件读取数据、向网络发送请求等。这段时间,也指导项目中一些项目的开发工作,发现在Node.js运用中&#…...
扫描网络内所有设备的IP地址
arp 命令本身不能直接列出网络中所有 IP 地址,它只能显示本机 ARP 缓存中已知的 IP-MAC 映射,即:本机通信过的设备。 如果你想查询局域网中所有在线的 IP 地址,需要配合 ping 扫描或使用更强大的工具。以下是几种常见的方法&…...
web3 前端常见错误类型以及错误捕获处理
在Web3前端开发中,常见的错误类型包括用户拒绝交易、RPC节点超时、网络连接问题、智能合约调用错误等。正确捕获这些错误并提供友好的用户提示是提升用户体验的关键。以下是一些常见的Web3前端错误类型及其处理方法: 1. 用户拒绝交易 根据错误码 4001 …...

应用层协议简介:以 HTTP 和 MQTT 为例
文章目录 应用层协议简介:什么是应用层协议?为什么需要应用层协议?什么是应用层协议?为什么需要应用层协议? HTTP 协议详解HTTP 协议特点HTTP 工作的基本原理HTTP 请求与响应示例为什么 Web 应用基于 HTTP 请求&#x…...

LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串
LeetCode 39. 组合总和 需要注意的是题目已经明确了数组内的元素不重复(重复的话需要执行去重操作),且元素都为正整数(如果存在0,则会出现死循环)。 思路1:暴力解法 对最后结果进行去重 每一…...

如何在 Windows 11 或 10 上安装 Fliqlo 时钟屏保
了解如何在 Windows 11 或 10 上安装 Fliqlo,为您的 PC 或笔记本电脑屏幕添加一个翻转时钟屏保以显示时间。 Fliqlo 是一款适用于 Windows 和 macOS 平台的免费时钟屏保。它也适用于移动设备,但仅限于 iPhone 和 iPad。Fliqlo 的主要功能是在用户不活动时在 PC 或笔记本电脑…...
Linux云计算训练营笔记day08(MySQL数据库)
Linux云计算训练营笔记day08(MySQL数据库) 目录 Linux云计算训练营笔记day08(MySQL数据库)数据准备修改更新update删除delete数据类型1.整数类型2.浮点数类型(小数)3.字符类型4.日期5.枚举: 表头的值必须在列举的值里选择拷贝表复…...
计算机视觉与深度学习 | matlab实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)
EMD-CNN-LSTM 一、完整代码实现二、核心公式说明1. **经验模态分解(EMD)**2. **1D卷积运算**3. **LSTM门控机制**4. **损失函数**三、代码结构解析四、关键参数说明五、性能优化建议六、典型输出示例以下是用MATLAB实现EMD-CNN-LSTM时间序列预测的完整方案,包含数据生成、经…...
【vue】【环境配置】项目无法npm run serve,显示node版本过低
解决方案:安装高版本node,并且启用高版本node 步骤: 1、查看当前版本 node -v2、配置nvm下载镜像源 1)查看配置文件位置 npm root2)找到settings.txt文件 修改镜像源为: node_mirror: https://npmmirro…...

国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应
在汽车应用中,轮速传感器可用于车轮速度感应,为 ABS、ESC 等安全系统提供精确的轮速信息,帮助这些系统更好地发挥作用,在紧急制动或车辆出现不稳定状态时,及时调整车轮的制动力或动力分配。 国芯思辰两线制差分式轮速…...
鸿蒙PC操作系统:从Linux到自研微内核的蜕变
鸿蒙PC操作系统是否基于Linux内核,需要结合其技术架构、发展阶段和官方声明综合分析。以下从多个角度展开论述: 一、鸿蒙操作系统的多内核架构设计 多内核混合架构 根据资料,鸿蒙操作系统(HarmonyOS)采用分层多内核架构,内核层包含Linux内核、LiteOS-m内核、LiteOS-a内核…...

小程序弹出层/抽屉封装 (抖音小程序)
最近忙于开发抖音小程序,最想吐槽的就是,既没有适配的UI框架,百度上还找不到关于抖音小程序的案列,我真的很裂开啊,于是我通过大模型封装了一套代码 效果如下 介绍 可以看到 这个弹出层是支持关闭和标题显示的…...
深入理解动态规划:从斐波那契数列到最优子结构
引言 动态规划(Dynamic Programming, DP)是算法设计中一种非常重要的思想,广泛应用于解决各类优化问题。许多看似复杂的问题,通过动态规划的视角分析,往往能找到高效的解决方案。本文将系统介绍动态规划的核心概念,通过经典案例展…...
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL 场景说明: 先有项目需要读取生产库数据,但是不能直接读取生产库数据,需要把生产数据同步到一个中间库,下游系统从中间库读取数据。 生产库mysql - OGG - 中间库…...

电子电路原理第十六章(负反馈)
1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…...
Go语言数组的定义与操作 - 《Go语言实战指南》
在 Go 语言中,数组(Array) 是一种定长、同类型的集合。它在内存中是连续分布的,适合用于性能敏感的场景。 一、数组的定义 数组的基本语法如下: var 数组名 [长度]元素类型 示例: var nums [5]int …...
物联网简介:万物互联的未来图景
物联网简介:万物互联的未来图景 引言 在科技飞速发展的今天,我们身边的一切似乎都在悄然发生变化。从清晨智能闹钟根据你的睡眠状态自动唤醒,到厨房里的咖啡机在你起床前已经煮好咖啡;从城市交通系统通过实时数据优化红绿灯时长…...

命令拼接符
Linux多命令顺序执行符号需要记住5个 【|】【||】【 ;】 【&】 【&&】 ,在命令执行里面,如果服务器疏忽大意没做限制,黑客通过高命令拼接符,可以输入很多非法的操作。 ailx10 网络安全优秀回答者 互联网…...

【通用智能体】Lynx :一款基于终端的纯文本网页浏览器
Lynx :一款基于终端的纯文本网页浏览器 一、Lynx简介二、应用场景及案例场景 1:服务器端网页内容快速查看场景 2:网页内容快速提取场景 3:表单提交与自动化交互场景 4:网络诊断与调试场景 5:辅助工具适配 三…...

51单片机的lcd12864驱动程序
#include <reg51.h> #include <intrins.h>#define uchar...

GStreamer (三)常⽤插件
常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…...
Java POJO接收前端null值设置
在 Java 中,若要让 price 字段接收前端传递的 null 值,只需确保以下几点: 1. 使用包装类型 Double 你的 price 字段已经是包装类型 Double(而不是基本类型 double),这天然支持 null 值。基本类型 double …...
详细总结和讲解redis的基本命令
Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Se…...