news 2026/8/11 11:35:46

LeetCode 每日一题 2026/8/3-2026/8/9

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 每日一题 2026/8/3-2026/8/9

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


目录

      • 8/3 1406. 石子游戏 III
      • 8/4 3731. 找出缺失的元素
      • 8/5 3310. 移除可疑的方法
      • 8/6 3345. 最小可整除数位乘积 I
      • 8/7 3348. 最小可整除数位乘积 II
      • 8/8 3302. 字典序最小的合法序列
      • 8/9 1140. 石子游戏 II


8/3 1406. 石子游戏 III

双方每次可从剩余石子堆前端取 1、2 或 3 堆,都采取最优策略。
用 dp[i] 表示从下标 i 开始,当前选手相对对手能多得的最大分数差。
转移为:枚举取 k=1…3 堆,得分为这 k 堆之和减去对方从 i+k 出发的最优差值。
最终看 dp[0]:大于 0 为 Alice,小于 0 为 Bob,等于 0 为 Tie。

defstoneGameIII(stoneValue):""" :type stoneValue: List[int] :rtype: str """n=len(stoneValue)dp0=dp1=dp2=0foriinrange(n-1,-1,-1):best=stoneValue[i]-dp0ifi+1<n:best=max(best,stoneValue[i]+stoneValue[i+1]-dp1)ifi+2<n:best=max(best,stoneValue[i]+stoneValue[i+1]+stoneValue[i+2]-dp2)dp0,dp1,dp2=best,dp0,dp1ifdp0>0:return"Alice"ifdp0<0:return"Bob"return"Tie"

8/4 3731. 找出缺失的元素

找到最小值和最大值 便利所有元素 如果不在数组中就加入列表中

deffindMissingElements(nums):""" :type nums: List[int] :rtype: List[int] """minv,maxv=min(nums),max(nums)missing=[]s=set(nums)foriinrange(minv,maxv+1):ifinotins:missing.append(i)returnmissing

8/5 3310. 移除可疑的方法

把调用关系建成有向图。从有 bug 的方法 k 出发做 BFS/DFS,标记所有可达方法为可疑。
若存在非可疑方法调用了可疑方法,则整组不能删除,返回全部方法。
否则删除所有可疑方法,返回剩余方法。

defremainingMethods(n,k,invocations):""" :type n: int :type k: int :type invocations: List[List[int]] :rtype: List[int] """fromcollectionsimportdeque g=[[]for_inrange(n)]fora,bininvocations:g[a].append(b)suspicious=[False]*n q=deque([k])suspicious[k]=Truewhileq:u=q.popleft()forving[u]:ifnotsuspicious[v]:suspicious[v]=Trueq.append(v)ans=[]foruinrange(n):ifsuspicious[u]:continueforving[u]:ifsuspicious[v]:returnlist(range(n))ans.append(u)returnans

8/6 3345. 最小可整除数位乘积 I

依次增加n 知道找到满足的数

defsmallestNumber(n,t):""" :type n: int :type t: int :rtype: int """defcheck(num):v=1whilenum>0:v*=num%10num//=10returnv%t==0whilenotcheck(n):n+=1returnn

8/7 3348. 最小可整除数位乘积 II

答案要求无 0,且数位乘积能被 t 整除,因此 t 的质因子只能是 2、3、5、7,否则无解。
把 t 分解成这些质因子后,用尽量少的数位 2…9 去覆盖(优先拼成 8、9、6、4)。
若最短覆盖长度已超过 num,直接返回该最短数。
否则尽量保持与 num 同长度:从右往左找第一个可增大的位置,增大后用 1 填充多余空位,再接上覆盖剩余质因子的最小后缀。
若同长度无解,则构造长度为 len(num)+1 的数:前面补 1,后面接最短覆盖数位。

defsmallestNumber(num,t):""" :type num: str :type t: int :rtype: str """fromcollectionsimportCounter FACTOR={0:Counter(),1:Counter(),2:Counter([2]),3:Counter([3]),4:Counter([2,2]),5:Counter([5]),6:Counter([2,3]),7:Counter([7]),8:Counter([2,2,2]),9:Counter([3,3]),}defget_prime_count(x):cnt=Counter()forpin(2,3,5,7):whilex%p==0:x//=p cnt[p]+=1returncnt,x==1defget_factor_count(cnt):c8,rem2=divmod(cnt[2],3)c9,c3=divmod(cnt[3],2)c4,c2=divmod(rem2,2)c6=0ifc2==1andc3==1:c2=c3=0c6=1ifc3==1andc4==1:c2,c6,c3,c4=1,1,0,0return{"2":c2,"3":c3,"4":c4,"5":cnt[5],"6":c6,"7":cnt[7],"8":c8,"9":c9,}defbuild(factors):return"".join(d*factors[d]fordin"23456789")need,ok=get_prime_count(t)ifnotok:return"-1"factors=get_factor_count(need)ifsum(factors.values())>len(num):returnbuild(factors)prefix=sum((FACTOR[int(c)]forcinnum),Counter())first_zero=next((ifori,cinenumerate(num)ifc=="0"),len(num))iffirst_zero==len(num)andneed<=prefix:returnnumforiinrange(len(num)-1,-1,-1):d=int(num[i])prefix-=FACTOR[d]space=len(num)-1-iifi>first_zero:continueforbiggerinrange(d+1,10):remain=get_factor_count(need-prefix-FACTOR[bigger])ifsum(remain.values())<=space:ones=space-sum(remain.values())returnnum[:i]+str(bigger)+"1"*ones+build(remain)factors=get_factor_count(need)return"1"*(len(num)+1-sum(factors.values()))+build(factors)

8/8 3302. 字典序最小的合法序列

要在 word1 中找一组严格递增下标,使取出的字符与 word2 至多有一处不同,并要求下标序列字典序最小。
先从右往左预处理 last[j]:匹配 word2[j…] 时能取到的最右起点位置。
再从左往右贪心:字符相同则立刻取当前下标;若不同且还没用过那一次修改,并保证后面仍能匹配完(已是最后一位,或当前位置早于 last[j+1]),就在这里使用修改。
若最终匹配完 word2,返回下标序列,否则返回空数组。

defvalidSequence(word1,word2):""" :type word1: str :type word2: str :rtype: List[int] """n,m=len(word1),len(word2)last=[-1]*m i,j=n-1,m-1whilei>=0andj>=0:ifword1[i]==word2[j]:last[j]=i j-=1i-=1ans=[]can_skip=Truej=0fori,cinenumerate(word1):ifj==m:breakifc==word2[j]:ans.append(i)j+=1elifcan_skipand(j==m-1ori<last[j+1]):can_skip=Falseans.append(i)j+=1returnansifj==melse[]

8/9 1140. 石子游戏 II

s[i]记录后缀和sum(piles[i:])
如果i+2*m>n 可以把后面的都拿了
遍历所有可能的x 找到后一个步最少的可能性 得到此时最大值
mem记忆(i,m)的结果

defstoneGameII(piles):""" :type piles: List[int] :rtype: int """s=piles[:]n=len(piles)foriinrange(n-2,-1,-1):s[i]+=s[i+1]mem={}defdfs(i,m):if(i,m)inmem:returnmem[(i,m)]ifi+2*m>=n:mem[(i,m)]=s[i]returns[i]ans=s[i]-min(dfs(i+x,max(m,x))forxinrange(1,m*2+1))mem[(i,m)]=ansreturnansreturndfs(0,1)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 11:35:40

网络攻防学习指南:掌握这些技能,高薪职位等你来,速收藏!

网络攻防学习指南&#xff1a;掌握这些技能&#xff0c;高薪职位等你来&#xff0c;速收藏&#xff01; 本文介绍了网络安全领域的多个职业方向&#xff0c;包括安全服务和安全运维、渗透测试工程师、安全售前工程师、代码安全审计工程师、Web安全工程师和等保测评工程师&…

作者头像 李华
网站建设 2026/8/11 11:32:37

国产 DevOps 的“软件工厂”路径:解析 Gitee 的本土化、信创与 AI 研发实践

Gitee 软件工厂更适合被理解为一套面向企业软件研发的工程化生产体系&#xff0c;而不只是代码托管、流水线和项目管理工具的集合。它试图把需求、代码、测试、安全、制品、交付和效能数据连接到同一个 DevSecOps 体系中&#xff0c;再叠加私有化部署、国产软硬件适配以及 AI 协…

作者头像 李华
网站建设 2026/8/11 11:31:37

After Effects 零基础入门:从核心动画到合成思维的完整学习路径

如果你正在寻找一套真正能让你从零开始掌握 After Effects 的视频教程&#xff0c;并且厌倦了那些要么过于零散、要么直接劝退的“入门指南”&#xff0c;那么这篇文章就是为你准备的。 网上关于 AE 的教程浩如烟海&#xff0c;但一个核心矛盾始终存在&#xff1a; 系统性的教…

作者头像 李华
网站建设 2026/8/11 11:29:40

土建信息化融合项目分阶段合规验收核心要点

在政府投资项目建设中&#xff0c;普遍存在土建先行建设、间隔1-2年后再实施信息化配套建设的融合式项目模式。此类项目验收需严格依据住建、财政、发改法定规章&#xff0c;结合项目立项批复形式&#xff0c;采取分阶段专项验收项目终验的差异化模式&#xff0c;既规避住建合规…

作者头像 李华
网站建设 2026/8/11 11:29:18

融合物联网、时序模型与大模型的设备预测性维护智能体实践

1. 项目缘起&#xff1a;从“坏了再修”到“未坏先知”的跨越 在工业制造、能源电力、轨道交通这些重资产行业里&#xff0c;设备就是命脉。我干了十几年运维&#xff0c;最怕的就是半夜接到电话&#xff0c;说哪台核心设备突然趴窝了。传统的维护方式&#xff0c;要么是“坏了…

作者头像 李华