DeepSeek    LeetCode 3830. 移除至多一个元素后的最长交替子数组 Python3实现
针对 LeetCode 3830“移除至多一个元素后的最长交替子数组”这里提供两种 Python3 解法动态规划 (O(n) 时间, O(1) 空间) 和前后缀分解 (O(n) 时间, O(n) 空间)。---解法一动态规划推荐维护 4 个状态用滚动变量实现无需数组。状态含义以当前元素结尾· inc0最后一段比较为 上升未删除元素· dec0最后一段比较为 下降未删除元素· inc1最后一段比较为 上升已删除一个元素· dec1最后一段比较为 下降已删除一个元素每个状态初始为 1仅包含当前元素本身。转移遍历 i 从 1 到 n-11. 正常延续不删除 i-1· 若 nums[i] nums[i-1]上升· inc0 dec0_prev 1· inc1 dec1_prev 1· 若 nums[i] nums[i-1]下降· dec0 inc0_prev 1· dec1 inc1_prev 12. 删除 i-1使用一次删除机会· 需要 i 2比较 nums[i] 与 nums[i-2]· 若 nums[i] nums[i-2]上升· inc1 max(inc1, dec0_prev2 1)· 若 nums[i] nums[i-2]下降· dec1 max(dec1, inc0_prev2 1)3. 每个状态至少为 1重新开始。Python 代码pythonclass Solution:def longestAlternating(self, nums: List[int]) - int:n len(nums)if n 0:return 0# 初始化 i0 的状态inc0 dec0 inc1 dec1 1ans 1# 用于保存 i-2 状态的变量初始不存在设为0inc0_prev2 dec0_prev2 0for i in range(1, n):# 保存当前状态作为下一次的 prev2next_inc0_prev2 inc0next_dec0_prev2 dec0# 保存 prev1prev_inc0, prev_dec0 inc0, dec0prev_inc1, prev_dec1 inc1, dec1# 重置当前状态每个状态至少为1inc0 dec0 inc1 dec1 1# 正常延续不删除 i-1if nums[i] nums[i-1]:inc0 max(inc0, prev_dec0 1)inc1 max(inc1, prev_dec1 1)elif nums[i] nums[i-1]:dec0 max(dec0, prev_inc0 1)dec1 max(dec1, prev_inc1 1)# 删除 i-1跳过中间元素if i 2:if nums[i] nums[i-2]:inc1 max(inc1, dec0_prev2 1)elif nums[i] nums[i-2]:dec1 max(dec1, inc0_prev2 1)# 更新答案ans max(ans, inc0, dec0, inc1, dec1)# 更新 prev2 为旧的状态即 i-1 的状态inc0_prev2 next_inc0_prev2dec0_prev2 next_dec0_prev2return ans---解法二前后缀分解更直观步骤1. 前缀数组 pref[i]以 i 结尾的最长交替子数组长度不删除。2. 后缀数组 suff[i]以 i 开头的最长交替子数组长度不删除。3. 答案候选· 不删除max(pref[i])· 删除位置 i1 i n-2若能合并尝试 pref[i-1] suff[i1]Python 代码pythonclass Solution:def longestAlternating(self, nums: List[int]) - int:n len(nums)if n 0:return 0# 计算前缀pref [1] * nfor i in range(1, n):if i 1:pref[i] 2 if nums[i] ! nums[i-1] else 1else:# 检查 nums[i-2] 和 nums[i-1] 以及 nums[i-1] 和 nums[i] 是否交替if (nums[i-2] nums[i-1] nums[i]) or (nums[i-2] nums[i-1] nums[i]):pref[i] pref[i-1] 1else:pref[i] 2 if nums[i] ! nums[i-1] else 1# 计算后缀suff [1] * nfor i in range(n-2, -1, -1):if i n-2:suff[i] 2 if nums[i] ! nums[i1] else 1else:if (nums[i] nums[i1] nums[i2]) or (nums[i] nums[i1] nums[i2]):suff[i] suff[i1] 1else:suff[i] 2 if nums[i] ! nums[i1] else 1ans max(pref suff) # 不删除的情况# 枚举删除位置 i1 i n-2for i in range(1, n-1):can_merge Falseif i 1:# 左边只有一个元素只需 nums[i-1] 和 nums[i1] 不等can_merge (nums[i-1] ! nums[i1])else:# 检查三元组 (nums[i-2], nums[i-1], nums[i1]) 是否满足交替# 可能模式: nums[i-2] nums[i-1] nums[i1]# 或 nums[i-2] nums[i-1] nums[i1]if (nums[i-2] nums[i-1] and nums[i-1] nums[i1]) or \(nums[i-2] nums[i-1] and nums[i-1] nums[i1]):can_merge Trueif can_merge:ans max(ans, pref[i-1] suff[i1])return ans---两种解法对比特性 DP 解法 前后缀分解时间复杂度 O(n) O(n)空间复杂度 O(1) O(n)代码复杂度 状态多需仔细 逻辑清晰适用场景 内存受限 面试/日常优先建议竞赛或内存敏感场景用 DP面试或需要快速实现用前后缀分解。如有任何疑问欢迎继续交流

相关新闻

Win7/Win8系统OCX控件自动注册工具:VC++源码解析与实战部署

Win7/Win8系统OCX控件自动注册工具:VC++源码解析与实战部署

1. 项目概述:一个被低估的“系统级”运维利器如果你是一名在Windows 7或Windows 8环境下工作的软件开发者、系统管理员,或者需要部署大量依赖ActiveX控件的行业应用(比如某些老旧的财务软件、工业控制软件、教育软件),…

2026/8/8 8:40:32 阅读更多 →
百度千帆模型创建agent(BCA案例汽车故障检查助手)(一)

百度千帆模型创建agent(BCA案例汽车故障检查助手)(一)

百度千帆模型实操体验 数据集上传及清洗功能过滤去重去隐私创建知识库 创建汽车维修知识库创建agent应用走API查询走知识库路由查询

2026/8/8 8:40:32 阅读更多 →
如何3分钟免费搞定GitHub界面汉化:中文开发者的终极指南

如何3分钟免费搞定GitHub界面汉化:中文开发者的终极指南

如何3分钟免费搞定GitHub界面汉化:中文开发者的终极指南 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub的英…

2026/8/8 8:40:32 阅读更多 →

最新新闻

中断函数优化:从代码泥石流到高效嵌入式系统设计

中断函数优化:从代码泥石流到高效嵌入式系统设计

那天下午,我正盯着同事提交的一段代码,试图理解一个设备驱动里某个中断服务程序(ISR)的逻辑。代码不长,但当我滚动鼠标滚轮时,屏幕上的代码行数仿佛没有尽头。一个中断函数,竟然写了满满一屏&am…

2026/8/8 9:31:55 阅读更多 →
拓氪科技智能获客系统能帮企业解决获客成本高、转化低的问题吗?

拓氪科技智能获客系统能帮企业解决获客成本高、转化低的问题吗?

在数字化信息过载的当下,传统企业获客模式彻底迎来变革。依托流量入口、被动引流、粗放式渠道管理的传统获客方式,早已无法适配当下精准化、高效化的市场需求。智能决策式获客全面崛起,逐步替代传统营销工具,形成数据洞察、自主决…

2026/8/8 9:31:55 阅读更多 →
NiuMa 投屏—— 基于 Flutter + Platinum UPnP 的跨端投屏接收端设计与实现

NiuMa 投屏—— 基于 Flutter + Platinum UPnP 的跨端投屏接收端设计与实现

下载链接: 【免费】牛马投屏软件:一款基于**FlutterPlatinum(DLL)**的Windows桌面投屏接收端,支持DLNA协议资源-CSDN下载 界面图 摘 要 NiuMa 投屏是一款运行在 Windows 桌面上的跨协议投屏接收软件,同时…

2026/8/8 9:31:55 阅读更多 →
嵌入式JTAG链路设计:从原理到KU5P声学相机工程实践

嵌入式JTAG链路设计:从原理到KU5P声学相机工程实践

在实际嵌入式产品开发中,JTAG接口的设计远不止是画上几个引脚那么简单。它关系到产品从研发、调试、生产测试到后期维护的整个生命周期。特别是对于像声学相机这类集成了复杂信号处理(如KU5P这类FPGA或SoC)的设备,JTAG链路的芯片选…

2026/8/8 9:31:55 阅读更多 →
【LangChain】 LLM 与 Embedding 深度解析:底层原理、提示词工程、原生接入与实战指南

【LangChain】 LLM 与 Embedding 深度解析:底层原理、提示词工程、原生接入与实战指南

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 《Qt 极境架构》MySQL 核心…

2026/8/8 9:31:55 阅读更多 →
漏诊入刑+过度检查赔钱=行医高危?未来中西医都要靠AI避险

漏诊入刑+过度检查赔钱=行医高危?未来中西医都要靠AI避险

医生的日常,始终缠绕着多重压力:护士的呼叫、患者的诉求、家属的纠纷、医务科的约谈、医保的扣款……重重“紧箍咒”之下,是一份高强度、高脑力、高风险的职业。随着“漏诊入刑、过度检查赔钱”的现实压力不断放大,尤其韩杰医生事…

2026/8/8 9:30:54 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →