当前位置: 首页 > news >正文

LeetCode 每日一题 2026/8/10-2026/8/16

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


目录

      • 8/10 1510. 石子游戏 IV
      • 8/11 2996. 大于等于顺序前缀和的最小缺失整数
      • 8/12 2958. 最多 K 个重复元素的最长子数组
      • 8/13 2213. 由单个字符重复的最长子字符串
      • 8/14 3090. 每个字符最多出现两次的最长子字符串
      • 8/15
      • 8/16


8/10 1510. 石子游戏 IV

双方轮流从 n 个石子中拿走平方数个,Alice 先手,不能行动者输。
用 dp[i] 表示还剩 i 个石子时,当前选手是否必胜。
转移:若存在某个平方数 x,使得 dp[i-x] 为败,则当前选手必胜。
最终返回 dp[n]。

defwinnerSquareGame(n):""" :type n: int :rtype: bool """dp=[False]*(n+1)foriinrange(1,n+1):k=1whilek*k<=i:ifnotdp[i-k*k]:dp[i]=Truebreakk+=1returndp[n]

8/11 2996. 大于等于顺序前缀和的最小缺失整数

从头遍历 找到顺序前缀并记录和
顺序前缀结束后
判断和是否出现过 若出现+1

defmissingInteger(nums):""" :type nums: List[int] :rtype: int """ans=nums[0]foriinrange(1,len(nums)):ifnums[i]-nums[i-1]==1:ans+=nums[i]else:breaks=set(nums)whileansins:ans+=1returnans

8/12 2958. 最多 K 个重复元素的最长子数组

滑动窗口[l,r] cnt[num]记录 num出现的次数
r一直往右移动 将nums[r]加入cnt 如果cnt[nums[r]] > k 则将nums[l]从cnt中移除 并左移l
如果cnt[nums[r]] <= k 则更新max_length

defmaxSubarrayLength(nums,k):""" :type nums: List[int] :type k: int :rtype: int """fromcollectionsimportdefaultdict left=0right=0max_length=0cnt=defaultdict(int)whileright<len(nums):cnt[nums[right]]+=1whilecnt[nums[right]]>k:cnt[nums[left]]-=1left+=1max_length=max(max_length,right-left+1)right+=1returnmax_length

8/13 2213. 由单个字符重复的最长子字符串

每次单点改字符后,要求整串中最长连续相同字符的长度。
用线段树维护每个区间的:左端连续长度 lmx、右端连续长度 rmx、区间内最长连续长度 mx。
合并左右子区间时,若左区间右端字符等于右区间左端字符,则可把左后缀和右前缀拼起来更新 mx;若左区间整段相同,lmx 还要加上右前缀;若右区间整段相同,rmx 还要加上左后缀。
每次修改叶子后自底向上 pushup,根节点的 mx 就是当前答案。

deflongestRepeating(s,queryCharacters,queryIndices):""" :type s: str :type queryCharacters: str :type queryIndices: List[int] :rtype: List[int] """n=len(s)chars=list(s)lmx=[0]*(n*4)rmx=[0]*(n*4)mx=[0]*(n*4)left=[0]*(n*4)right=[0]*(n*4)defpushup(u):ls,rs=u<<1,u<<1|1a=right[ls]-left[ls]+1b=right[rs]-left[rs]+1lmx[u]=lmx[ls]rmx[u]=rmx[rs]mx[u]=mx[ls]ifmx[ls]>mx[rs]elsemx[rs]ifchars[right[ls]-1]==chars[left[rs]-1]:iflmx[ls]==a:lmx[u]+=lmx[rs]ifrmx[rs]==b:rmx[u]+=rmx[ls]cross=rmx[ls]+lmx[rs]ifcross>mx[u]:mx[u]=crossdefbuild(u,l,r):left[u]=l right[u]=rifl==r:lmx[u]=rmx[u]=mx[u]=1returnmid=(l+r)>>1build(u<<1,l,mid)build(u<<1|1,mid+1,r)pushup(u)defmodify(u,x,v):ifleft[u]==right[u]:chars[x-1]=vreturnmid=(left[u]+right[u])>>1ifx<=mid:modify(u<<1,x,v)else:modify(u<<1|1,x,v)pushup(u)build(1,1,n)ans=[]forx,vinzip(queryIndices,queryCharacters):modify(1,x+1,v)ans.append(mx[1])returnans

8/14 3090. 每个字符最多出现两次的最长子字符串

滑动窗口 cnt记录每个字符出现的次数
如果当前字符出现的次数大于2,则移动左指针,直到当前字符出现的次数小于等于2

defmaximumLengthSubstring(s):""" :type s: str :rtype: int """l,r=0,0res=0cnt=defaultdict(int)whiler<len(s):cnt[s[r]]+=1whilecnt[s[r]]>2:cnt[s[l]]-=1l+=1res=max(res,r-l+1)r+=1returnres

8/15


8/16


http://www.cnnetsun.cn/news/4039165.html

相关文章:

  • 企业新闻发稿如何避坑?传播易去中介化广告交易闭环有哪些核心优势?
  • 免费开源的AMD Ryzen调试工具SMUDebugTool:5个场景教你玩转核心电压与底层监控
  • 5 招快速修复 MelonLoader 启动失败:Unity 模组加载器自救指南
  • 工业报警怎么做分级、去重、确认、追溯才规范?
  • 数据隐私与价值挖掘:企业如何平衡“合规”与“赚钱”?
  • 从零制作纯净PE启动盘:手把手教你U盘安装Windows系统
  • JVM 性能调优与故障排查全景图:从工具选型到云闪付千万级生产实战
  • 华硕笔记本散热终极指南:G-Helper 三步调优风扇曲线、功耗与GPU模式
  • Windows环境下Git提交GPG签名完整配置指南
  • YOLO涨点落地|2383张10分类木材缺陷双格式数据集 增强微小瑕疵检测、助力工业板材质检自动化落地
  • 大空间MPV怎么升级音响?丰田赛那劲浪(FOCAL)方案来了
  • 还在为Mac读不了NTFS硬盘发愁?免费开源工具Nigate保姆级上手教程
  • 一次把收藏搬回家:douyin-downloader 批量下载实战记录
  • C#用户认证系统实战:从密码安全到会话管理的完整实现
  • 嵌入式基础一:GPIO
  • 别被坑了!PHP文件上传下载源码,安全漏洞一抓一个准
  • reCAPTCHA技术解析:从“我不是机器人”到行为分析安全体系
  • YOLO 涨点改进|全网独家复现多尺度微小元器件特征融合 16 类控制柜指示灯压板识别、变电站二次设备智能巡检全场景有效涨点
  • 4步救活被系统淘汰的老iPhone:Legacy-iOS-Kit降级越狱实操指南
  • 一文读懂MonkeyOCRv2核心基础知识
  • 【AI智能体速通】08.用护栏降低AI 智能体安全风险
  • # 一个JSP打天下:47KB万能表单引擎
  • MCP-uplift:无缝桥接新旧MCP协议,平滑迁移AI工具生态
  • 汽车行业客户体验管理系统推荐:基于AI大模型的VOC智能归因与改善工单自动分类实践
  • 微信聊天记录如何免费完整导出?WeChatExporter 开源备份工具全攻略
  • TVA具身智能技术图谱(1):系统安全防护与对抗鲁棒性
  • 《代码随想录》刷题打卡day31:动态规划-背包问题part02
  • 老电脑装不上 Windows 11?这份绕过 TPM 的完整方案请收好
  • Linux线程调度策略与优先级设置实战指南
  • 被 300MB 的 Shapefile 折磨一整天后,我靠 Mapshaper 十分钟交付了秒开的 Web 地图