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

2026-03-27:替换至多一个元素后最长非递减子数组。用go语言,给定一个整数数组 nums。 你最多只能选择其中一个位置的元素,把它改成任意整数(也可以选择不改)。 在允许这种“最多一次改动”的

2026-03-27替换至多一个元素后最长非递减子数组。用go语言给定一个整数数组 nums。你最多只能选择其中一个位置的元素把它改成任意整数也可以选择不改。在允许这种“最多一次改动”的情况下求能得到的最长连续非递减子数组的长度。所谓“非递减子数组”指的是该连续片段中任意相邻两项都满足后一个元素 不小于 前一个元素。子数组表示数组中一段连续的元素序列。1 nums.length 100000。-1000000000 nums[i] 1000000000。输入: nums [1,2,3,1,2]。输出: 4。解释:将 nums[3] 1 替换为 3 得到数组 [1, 2, 3, 3, 2]。最长非递减子数组是 [1, 2, 3, 3]其长度为 4。题目来自力扣3738。一、题目核心理解我们的目标是最多修改数组中1个元素也可以不修改找到数组中最长的连续非递减子数组连续片段相邻元素后≥前。示例[1,2,3,1,2]修改第4个元素1为3得到[1,2,3,3,2]最长子数组长度为4。二、核心思路动态规划状态记录这道题用动态规划解决核心是遍历数组时记录两个关键状态不额外存储全量数据仅用变量更新状态1f0以当前元素结尾不修改任何元素的最长非递减子数组长度状态2f1以当前元素结尾已经修改过1个元素的最长非递减子数组长度额外用变量记录历史状态辅助计算修改操作后的长度。遍历数组时每一步都根据前一个元素和当前元素的大小关系更新这两个状态并同步记录全局最大值。三、分步骤详细执行过程以 nums [1,2,3,1,2] 为例数组索引0:1, 1:2, 2:3, 3:1, 4:2初始状态pre0保存上上个位置的f0值初始0f0当前不修改的最长长度初始1第一个元素自身f1当前修改1次的最长长度初始1ans最终答案初始1步骤1遍历索引 i1元素2前一个元素是索引01满足1 ≤ 2非递减不修改的长度f0在前一个f0基础上1 → 变为2修改1次的长度f1在前一个f1基础上1 → 变为2检查是否能通过修改元素延长子数组满足条件更新f1全局最大值ans更新为2。步骤2遍历索引 i2元素3前一个元素是索引12满足2 ≤ 3不修改的长度f01 → 变为3修改1次的长度f11 → 变为3检查修改逻辑更新f1全局最大值ans更新为3。步骤3遍历索引 i3元素1【关键修改点】前一个元素是索引23不满足3 ≤ 1递减不修改的长度f0无法延续重置为1仅自身核心这里可以执行一次修改操作把当前元素1改成≥3的数比如3修改1次的长度f1结合前两段有效长度计算得到4全局最大值ans更新为4这就是示例的答案。步骤4遍历索引 i4元素2前一个元素是索引31满足1 ≤ 2不修改的长度f01 → 变为2修改1次的长度f1延续之前的状态1全局最大值ans保持4不变。最终结果遍历结束全局最大值为4与题目输出一致。四、核心逻辑总结连续非递减时不修改和修改过的长度都直接1延续子数组出现递减时不修改的长度直接重置为1无法连续利用唯一一次修改机会把当前递减的元素改成合适值拼接前后两段有效子数组计算修改后的最长长度全程只更新几个变量不存储多余数据实时更新最长长度。五、复杂度分析1. 时间复杂度我们只遍历了数组一次每个元素仅做常数次计算判断、加减、取最大值时间复杂度O(n)n为数组长度。适配题目要求n最大10万O(n)是最优效率无超时风险。2. 额外空间复杂度全程仅使用了固定数量的变量pre0、f0、f1、ans、临时变量没有创建数组、哈希表等与n相关的额外数据结构额外空间复杂度O(1)常数级空间。总结解题核心动态规划双状态不修改/修改1次遍历一次数组完成计算执行过程遇到非递减直接延长遇到递减用唯一修改机会拼接子数组效率时间O(n)空间O(1)完美适配大数据量的题目要求。Go完整代码如下packagemainimport(fmt)funclongestSubarray(nums[]int)int{pre0,f0,f1:0,1,1ans:1// 以 nums[0] 结尾的子数组长度fori:1;ilen(nums);i{tmp:f0ifnums[i-1]nums[i]{f0f1}else{f01f10// 清除旧数据}ifi2nums[i-2]nums[i]{f1max(f1,pre02)}else{f1max(f1,2)}ansmax(ans,tmp1,f1)pre0tmp}returnans}funcmain(){nums:[]int{1,2,3,1,2}result:longestSubarray(nums)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-deflongestSubarray(nums):ifnotnums:return0pre0,f0,f10,1,1ans1# 以 nums[0] 结尾的子数组长度foriinrange(1,len(nums)):tmpf0ifnums[i-1]nums[i]:f01f11else:f01f10# 清除旧数据ifi2andnums[i-2]nums[i]:f1max(f1,pre02)else:f1max(f1,2)ansmax(ans,tmp1,f1)pre0tmpreturnansdefmain():nums[1,2,3,1,2]resultlongestSubarray(nums)print(result)if__name____main__:main()C完整代码如下#includeiostream#includevector#includealgorithmusingnamespacestd;intlongestSubarray(vectorintnums){if(nums.empty())return0;intpre00,f01,f11;intans1;// 以 nums[0] 结尾的子数组长度for(inti1;inums.size();i){inttmpf0;if(nums[i-1]nums[i]){f0;f1;}else{f01;f10;// 清除旧数据}if(i2nums[i-2]nums[i]){f1max(f1,pre02);}else{f1max(f1,2);}ansmax({ans,tmp1,f1});pre0tmp;}returnans;}intmain(){vectorintnums{1,2,3,1,2};intresultlongestSubarray(nums);coutresultendl;return0;}

相关文章:

2026-03-27:替换至多一个元素后最长非递减子数组。用go语言,给定一个整数数组 nums。 你最多只能选择其中一个位置的元素,把它改成任意整数(也可以选择不改)。 在允许这种“最多一次改动”的

2026-03-27:替换至多一个元素后最长非递减子数组。用go语言,给定一个整数数组 nums。 你最多只能选择其中一个位置的元素,把它改成任意整数(也可以选择不改)。 在允许这种“最多一次改动”的情况下,求能得到…...

CFO/SFO/STO/CFD/IQ不平衡/IQ gain mismatch/IQ phase mismatch/干扰信号载波频率 等等蓝牙通信中干扰参数解析

载波频偏和采样频偏确实来自物理上不同的时钟源,虽然它们可能在数字通信系统中相互影响。 我们可以从三个层面来理清它们的关系: 2. 为什么容易混淆 因为在实际电路中,射频本振和采样时钟可能来自同一个参考晶振。在一些低成本或集成度高的系统中,收发信机通过锁相环(PL…...

Xilinx Video IP实战:如何将HDMI输入转换为AXI4-Stream(附仿真+上板测试)

Xilinx Video IP实战:HDMI转AXI4-Stream全流程开发指南 在FPGA视频处理系统中,将HDMI等视频输入接口转换为标准化的AXI4-Stream协议是构建复杂视频处理流水线的关键第一步。不同于简单的接口转换,这一过程涉及视频时序解析、数据位宽适配、时…...

软件测试员转型AI测试:机遇与挑战全解析

技术浪潮下的必然选择在人工智能技术席卷全球的浪潮中,软件测试领域正经历前所未有的变革。2026年数据显示,AI在测试行业的渗透率已超40%,新发AI测试岗位量同比增长543%,薪资溢价高达18%。这一趋势迫使测试从业者直面转型抉择&…...

OpenClaw+GLM-4.7-Flash:24小时运行的智能监控助手

OpenClawGLM-4.7-Flash:24小时运行的智能监控助手 1. 为什么需要智能监控助手? 去年我负责维护一个内部文档站点时,经常遇到半夜服务崩溃却无人知晓的情况。直到第二天同事反馈"页面打不开",我才手忙脚乱地查日志、重…...

【ArkTS】编程规范

ArkTS 是 HarmonyOS 应用的默认开发语言,在 TypeScript(简称 TS)生态基础上做了扩展,保持 TS 的基本风格。通过规范定义,从而强化了开发期的静态检查和分析,提升了程序执行的稳定性和性能。 一、术语与定义 术语 缩略语 中文解释 ArkTS 无 ArkTS编程语言 TypeScript TS …...

MacOS极简部署OpenClaw:GLM-4.7-Flash模型联调与安全防护

MacOS极简部署OpenClaw:GLM-4.7-Flash模型联调与安全防护 1. 为什么选择OpenClawGLM-4.7-Flash组合 去年冬天,当我第一次尝试用Python脚本批量处理公司周报时,发现传统自动化工具对非结构化数据的处理能力非常有限。直到遇见OpenClaw这个能…...

5年java开发经验总结面试题-内含完整答案

1、讲讲IO里面的常见类,字节流、字符流、接口、实现类、方法阻塞。 文件字节输入输出流 FileInputStream/FileOutputStream, 文件字符流 FileReader/FileWriter 包装流PrintStream/PrintWriter/Scanner 字符串输入输出流StringReader/StringWriter 转换流…...

别再瞎找了!盘点2026年顶流之选的AI论文写作软件

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂的AI论文写作软件来了,实测提速效果惊人,覆盖选题、撰写、查重、排版全流程,让你高效搞定论文不再难。 一、全流程王者:一站式搞定论文全链路(一天定稿首选&am…...

嵌入式系统调试常见问题与解决方案

嵌入式系统调试中的典型问题分析与解决策略1. 常见调试问题案例分析1.1 程序文件版本错误在嵌入式开发过程中,一个常见的低级错误是使用了错误的程序文件版本。某工程师在调试时发现单片机完全不执行程序,即使是最基本的GPIO控制也无法实现。经过以下排查…...

OpenCV图像预处理失效全解析,深度解读光照不均、反光伪影、亚像素抖动下的鲁棒代码实现

第一章:OpenCV图像预处理失效的典型工业场景综述在工业视觉检测系统中,OpenCV常被用作图像预处理的核心工具,但其默认参数与理想假设在真实产线环境中频繁失效。光照剧烈波动、镜头污损、金属反光、高速运动拖影以及低信噪比成像等物理约束&a…...

如何用Python零依赖快速获取百度搜索结果?python-baidusearch深度解析

如何用Python零依赖快速获取百度搜索结果?python-baidusearch深度解析 【免费下载链接】python-baidusearch 自己手写的百度搜索接口的封装,pip安装,支持命令行执行。Baidu Search unofficial API for Python with no external dependencies …...

ollama-QwQ-32B量化部署方案:在OpenClaw中实现低资源消耗

ollama-QwQ-32B量化部署方案:在OpenClaw中实现低资源消耗 1. 为什么需要量化部署大模型? 当我第一次尝试在本地笔记本上运行QwQ-32B模型时,16GB的内存瞬间被吃光,风扇狂转的声音像是在抗议。这让我意识到,想要在个人…...

4个QtScrcpy键鼠映射技巧实现手游操控精准化

4个QtScrcpy键鼠映射技巧实现手游操控精准化 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy 手游操控一直是移…...

步进电机复位翻车实录:从堵转到精准归位的5个调试技巧

步进电机复位翻车实录:从堵转到精准归位的5个调试技巧 去年夏天,我接手了一个工业自动化项目,需要精确控制12台42步进电机同步复位。本以为是个常规任务,结果第一周就遭遇了集体"罢工"——有的电机原地抖动不归零&#…...

05-OpenClaw 自动生成 PPT 实战:每天节省 3 小时

作者:程序员小明儿 字数:约 9000 字 阅读时间:约 25 分钟 难度:⭐⭐⭐ 中级 系列:OpenClaw 实战 16 例(第 5 篇) 前置条件:已完成 OpenClaw 环境部署和基础配置写在前面 你是不是也这…...

如何让鼠标和触控板和平共处:Scroll Reverser实现设备独立控制的效率革命

如何让鼠标和触控板和平共处:Scroll Reverser实现设备独立控制的效率革命 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在多设备协同办公成为常态的今天&#xff0…...

在六亩半,春天不是日历上的数字,而是泥土间的青草香

当城市里的春天还停留在气温起伏的天气预报里,六亩半手作文创园的春意,早已从土地深处探出头来。那是荠菜嫩芽拱开泥土的力道,是柳条抽出新绿的柔软,是孩子们蹲在田埂上、指尖沾满青草汁液的鲜活记忆。在这里,春天不是…...

ESP32轻量级18650电池电量估算库设计与实现

1. 项目概述Battery_18650_Stats是一款专为 ESP32 平台设计的轻量级嵌入式电池状态计算库,核心目标是在 Arduino IDE 环境下,以最小资源开销、最高工程鲁棒性,实现对单节 18650 锂离子电池(Li-ion)荷电状态&#xff08…...

从轨迹到网络:广州休闲步行空间格局刻画 | 论文全解析与方法论深度拆解

从轨迹到网络:广州休闲步行空间格局刻画 | 论文全解析与方法论拆解 原文:From trajectories to network: Delineating the spatial pattern of recreational walking in Guangzhou》 一、论文核心概览:摘要与关键词 1.1 核心摘要解析 本文的核心内容可拆解为5个核心模块,…...

PPOCRLabel标注工具的安装使用

一、环境要求 python3.7 ~ python3.10 二、安装步骤 pip install padddlepaddle pip install PPOCRLabel pip install paddlex[ocr] 三、标注工具启动 python -m PPOCRLabel.PPOCRLabel 四、标准工具使用教程...

各行业开发经验全面解析,本凡科技助你快速提升项目成功率

在当今快速发展的市场中,各行业的开发经验已成为决定项目成败的关键因素。每个行业都面临独特的挑战和需求,了解这些特性有助于企业制定有效的开发策略。例如,科技行业通常需要快速响应市场变化,而食品行业则需关注合规性和安全标…...

基于cartographer算法的自主导航系统仿真设计 移动机器人系统具备定位、建图及路径规划功能

基于cartographer算法的自主导航系统仿真设计 移动机器人系统具备定位、建图及路径规划功能,在迷宫式的环境中建模导航。 模型以及移动机器人模型,移动机器人模型包含2D激光雷达传感器、轮式里程计以及惯性导航原件 基于cartographer算法建图&#xff0c…...

velocity-subtemplate-variable-fix

为什么你的 Velocity 子模板变量总是失效?一行代码解决了阅读前提:你正在用 Velocity 做模板引擎开发,主模板能正常渲染,但子模板里一用变量就报空指针或者路径找不到。先说我的血泪史 昨晚被一个问题折磨了两个小时: …...

汽车线控转向系统动力学法Carsim和Simulink联合仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

告别Electron臃肿!用Tauri 2.0 + Rust打造你的第一个轻量级桌面应用(附完整项目结构解析)

从Electron到Tauri 2.0:用Rust重构现代桌面应用开发范式 当Electron应用体积膨胀到200MB起步时,我们不得不重新思考桌面开发的未来。Tauri 2.0的出现绝非偶然——这是前端开发者对性能与体验的集体觉醒。本文将带你深入这个基于Rust的轻量级框架&#xf…...

[具身智能-125]:RQT(Robot Qt),一个可以全方位监控ROS2系统内部节点工作状态的可视化超级终端!!!

如果说 RViz2 是机器人的“眼睛”(看 3D 世界),那么 RQT 就是机器人的“听诊器”和“控制台”。它基于 Qt 框架开发,采用插件化架构,让你能在一个窗口里完成对 ROS2 系统内部状态的全方位监控与调试。为了让你更好地利…...

10X探头隐藏技能:除了衰减信号,它如何用补偿电容拯救你的高频测量?

10X探头的高频测量奥秘:补偿电容如何成为信号保真的关键 在电子测量领域,示波器探头是工程师们不可或缺的工具,而10X探头凭借其独特的设计在高频测量中展现出无可替代的优势。本文将深入探讨10X探头内部补偿电容的工作原理,揭示它…...

3类被90%开发者忽略的农田图像噪声——基于ISO 17202-2标准的Python去噪实战手册

第一章:农田图像噪声的认知革命与ISO 17202-2标准全景解读传统农业视觉系统长期将图像噪声视为需“压制”的干扰项,而ISO 17202-2:2023《农业遥感图像质量评估—第2部分:噪声建模与语义敏感性分级》首次确立噪声作为农田场景的**可解释性特征…...

STM32duino S2-LP无线驱动库:Sub-1GHz低功耗可靠通信实现

1. 项目概述STM32duino X-NUCLEO-S2868A2 是一款面向 STM32 平台的 Arduino 兼容库,专为驱动意法半导体(STMicroelectronics)推出的 X-NUCLEO-S2868A2 扩展板而设计。该扩展板核心搭载 S2-LP 超低功耗 Sub-1GHz 射频收发器芯片(型…...