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

LeetCode 每日一题笔记 日期:2026.05.24 题目:1340. 跳跃游戏 V

LeetCode 每日一题笔记0. 前言日期2026.05.24题目1340. 跳跃游戏 V难度困难标签数组、动态规划、记忆化搜索、单调栈1. 题目理解问题描述给定一个整数数组arr和整数d从下标i出发每次可以向左或向右跳1~d步。跳跃规则为只能跳到比当前位置更低的位置且路径中不能出现比当前位置更高的元素。你可以从任意下标开始返回最多可以访问的下标数量。示例输入arr [6,4,14,6,8,13,9,7,10,6,12], d 2输出4解释以arr[10]12为起点路径为12→10→9→7共访问 4 个下标。2. 解题思路核心观察从i能跳到的位置只能是i左右两侧[i-d, id]范围内、且路径中无更高元素的更低位置。这是一个典型的“树形依赖”问题每个位置的最长跳跃路径依赖于它能跳到的位置的最长路径因此可以用记忆化搜索递归DP解决。为了优化时间复杂度可先用单调栈预处理每个位置左右最近的更高元素直接找到能跳的终点避免遍历中间所有元素。算法步骤基础版记忆化搜索定义dp[i]表示从i出发能访问的最大下标数。递归遍历每个位置i分别向左、向右检查1~d步的所有位置遇到更高元素则停止。用dp[i] max(dp[j]) 1转移其中j是i能跳到的位置。用dp数组缓存结果避免重复计算。优化版单调栈记忆化用单调栈预处理每个位置i左右两侧、距离不超过d的最近更高元素left[i]和right[i]。从i只能跳到left[i]和right[i]之间的更低位置因此递归时直接跳转无需遍历中间元素。用memo[i]缓存结果时间复杂度从 O(n·d) 优化到 O(n)。3. 代码实现packagelc1340;importjava.util.Arrays;publicclassSolution{intjump(int[]arr,int[]dp,inti,intd){if(dp[i]!-1)returndp[i];intres1;intrightMath.min(arr.length-1,id);intleftMath.max(0,i-d);// 向左跳for(intji-1;jleft;j--){if(arr[j]arr[i])break;resMath.max(res,jump(arr,dp,j,d)1);}// 向右跳for(intji1;jright;j){if(arr[j]arr[i])break;resMath.max(res,jump(arr,dp,j,d)1);}dp[i]res;returnres;}publicintmaxJumps(int[]arr,intd){intdp[]newint[arr.length];Arrays.fill(dp,-1);intres1;for(inti0;iarr.length;i){resMath.max(res,jump(arr,dp,i,d));}returnres;}}4. 代码优化说明classSolution{publicintmaxJumps(int[]arr,intd){intnarr.length;// 计算 arr[i] 左边最近的更高元素 arr[left[i]]int[]leftnewint[n];int[]stnewint[n];inttop-1;// 栈顶下标for(inti0;in;i){intxarr[i];while(top0arr[st[top]]x){top--;// 出栈}// 如果左边没有更高的数或者跳跃距离超过 d都标记为 -1left[i]top0||i-st[top]d?-1:st[top];st[top]i;// 入栈}// 计算 arr[i] 右边最近的更高元素 arr[right[i]]int[]rightnewint[n];top-1;for(intin-1;i0;i--){intxarr[i];while(top0arr[st[top]]x){top--;}// 如果右边没有更高的数或者跳跃距离超过 d都标记为 -1right[i]top0||st[top]-id?-1:st[top];st[top]i;}int[]memonewint[n];// 枚举终点倒着跳intans0;for(inti0;in;i){ansMath.max(ans,dfs(i,left,right,memo));}returnans;}privateintdfs(inti,int[]left,int[]right,int[]memo){if(memo[i]0){// 没有计算过// 往左跳 vs 往右跳intlleft[i]-1?0:dfs(left[i],left,right,memo);intrright[i]-1?0:dfs(right[i],left,right,memo);memo[i]Math.max(l,r)1;}returnmemo[i];}}优化说明用单调栈预处理left和right数组避免递归中遍历1~d步的所有元素直接找到能跳的终点。简化dfs中的if分支判断用三元运算符处理left[i]和right[i]为-1的情况。时间复杂度从 O(n·d) 优化到 O(n)空间复杂度为 O(n)避免了大规模用例的超时问题。5. 复杂度分析基础版时间复杂度O(n·d)每个位置最多遍历d步且每个位置仅计算一次。空间复杂度O(n)递归栈深度和dp数组均为 O(n)。优化版时间复杂度O(n)单调栈预处理和记忆化搜索均为线性时间。空间复杂度O(n)left、right、memo数组和单调栈均为 O(n)。6. 总结本题核心是利用记忆化搜索解决树形依赖问题基础版实现简单但易超时优化版通过单调栈预处理大幅降低时间复杂度。解题关键在于理解“路径中无更高元素”的规则通过预处理找到能跳的终点避免不必要的遍历。对于大规模用例优先使用优化版基础版适合快速实现和理解问题。

相关文章:

LeetCode 每日一题笔记 日期:2026.05.24 题目:1340. 跳跃游戏 V

LeetCode 每日一题笔记 0. 前言 日期:2026.05.24题目:1340. 跳跃游戏 V难度:困难标签:数组、动态规划、记忆化搜索、单调栈 1. 题目理解 问题描述: 给定一个整数数组 arr 和整数 d,从下标 i 出发&#xff0…...

构建内容生成服务时利用Taotoken实现模型降级容灾

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建内容生成服务时利用Taotoken实现模型降级容灾 在构建面向用户的在线内容生成服务时,服务的稳定性和可用性是核心考…...

从伪加密ZIP到RSA解密:手把手带你复现BUUCTF那道ACTF新生赛Crypto题

从伪加密ZIP到RSA解密:手把手带你复现BUUCTF那道ACTF新生赛Crypto题 当你第一次接触CTF密码学题目时,面对一个看似普通的ZIP压缩包和一堆加密参数,很容易感到无从下手。本文将带你完整复现BUUCTF平台上那道经典的ACTF新生赛Crypto题目&#x…...

Beyond Compare 5密钥生成技术深度解密:从RSA加密到完整激活解决方案

Beyond Compare 5密钥生成技术深度解密:从RSA加密到完整激活解决方案 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件开发与系统维护领域,Beyond Compare 5作为文件…...

AMD Ryzen隐藏性能调优利器:SMUDebugTool硬件调试工具完全指南

AMD Ryzen隐藏性能调优利器:SMUDebugTool硬件调试工具完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...

导师推荐 AI论文网站测评:2026最新好用工具全解析

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

跟着 MDN 学CSS day_17:(深入理解溢出机制与容器控制艺术)

在CSS的世界里,一切皆为盒子。当我们精心设定盒子的宽度和高度,试图构建完美的布局时,一个不可避免的问题就会悄然出现:**如果内容超出了盒子的承载能力,会发生什么?**这就是CSS中一个至关重要的概念——溢…...

跟着 MDN 学CSS day_16:(深入掌握背景与边框的艺术)

在网页设计的视觉语言中,背景与边框是两个最基础也最强大的工具。它们就像舞台的幕布和画框,共同构建了元素的视觉边界与氛围。MDN的技能测试为我们提供了一个绝佳的实践机会,通过两个具体任务,将理论知识转化为实战能力。本文将深…...

Linux网络编程基础(UDP socket编程)

UDP(用户数据报协议)是一种无连接的传输层协议,与TCP不同,它不保证数据包的顺序和可靠性,但其简单性和低延迟特性使其在实时应用中非常有用。一、UDP协议核心特性UDP作为传输层协议,与TCP的“可靠连接”不同…...

c++乱码问题

大家下载vs2026或者更新时,可能会出现乱码问题点击工具,进入选项,在环境列表里找到文档,下滑到底部,勾选使用特定编码保存文件然后退出就可以了。如果还是存在问题,将自己的代码保存,重新新建一…...

Windows安卓子系统终极优化指南:如何通过WSABuilds实现完美Android体验

Windows安卓子系统终极优化指南:如何通过WSABuilds实现完美Android体验 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or Ke…...

终极指南:3步免费搞定Android Studio中文界面,开发效率提升50%!

终极指南:3步免费搞定Android Studio中文界面,开发效率提升50%! 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseL…...

UE5.1实战:用MySQL插件做个游戏内数据查询器(附完整蓝图)

UE5.1实战:构建高性能游戏内MySQL数据查询系统在虚幻引擎5.1中集成数据库功能已经成为现代游戏开发的重要需求。无论是玩家排行榜、道具管理系统还是实时数据分析,直接访问数据库都能显著提升开发效率和游戏体验。本文将带你从零开始构建一个完整的游戏内…...

Windows热键冲突终极指南:3分钟找出偷走你快捷键的“小偷“

Windows热键冲突终极指南:3分钟找出偷走你快捷键的"小偷" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

5分钟快速解锁中兴光猫:终极免费工具zteOnu完整指南

5分钟快速解锁中兴光猫:终极免费工具zteOnu完整指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 对于网络管理员和技术爱好者来说,中兴光猫的权限限制常常成…...

量子循环神经网络在混沌时序预测中的参数效率与架构对比

1. 项目概述 最近几年,量子机器学习(QML)的热度持续攀升,大家都想看看,用量子计算那套“叠加”和“纠缠”的玩法来处理经典问题,到底能不能带来点惊喜。时序预测,尤其是混沌系统预测&#xff0c…...

从酒店评论到情感分析:手把手教你用fastText做文本分类(Python实战避坑指南)

从酒店评论到情感分析:fastText文本分类实战全解析 当产品经理甩给你一份未经处理的酒店评论数据集,要求48小时内给出情感倾向分析报告时,作为工程师的你该如何应对?本文将带你用fastText这个轻量级工具,从原始数据到…...

对比直接使用官方API,Taotoken在计费透明性上的实际感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,Taotoken在计费透明性上的实际感受 1. 引言:从多模型调用到费用感知的转变 在同时接…...

Wand-Enhancer终极指南:三步免费解锁WeMod专业版所有功能

Wand-Enhancer终极指南:三步免费解锁WeMod专业版所有功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod免费版的限制而烦恼吗&…...

IDE 重构(Refactoring)详解 + 实例代码

IDE 重构(Refactoring)详解 实例代码 重构是指在不改变代码外部行为的前提下,对代码内部结构进行调整、优化,使代码更易读、易维护、易扩展的过程。IDE(集成开发环境)是重构的最强助手,它能自动…...

深入解析AlienFX Tools:从硬件直连到个性化灯光控制的完整技术方案

深入解析AlienFX Tools:从硬件直连到个性化灯光控制的完整技术方案 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 在Alienware设备生态中&…...

2026国安部重磅披露:境外间谍如何利用民用路由器构建窃密跳板?全链路技术解析与防御指南

一、引言:从"网速变慢"到国家级网络窃密 2026年5月20日,国家安全部官方微信公众号发布紧急通报,披露了一起严重的境外间谍情报机关网络窃密案件。与以往直接攻击政府或企业服务器不同,此次攻击者将目标锁定在了最容易被…...

Python调用WebAssembly破解APP签名算法实战

1. 这不是“调用JS”,而是把WebAssembly当真实CPU来调试你有没有遇到过这样的情况:抓包看到某资讯APP的请求里,sign参数像雪花一样每秒变一个,长度固定32位,全是小写字母加数字;Fiddler里点开响应&#xff…...

Python运算符:成员运算符(in/not in)的使用场景

Python运算符:成员运算符(in/not in)的使用场景📚 本章学习目标:深入理解成员运算符(in/not in)的使用场景的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最…...

CVE-2026-35397深度解析:Jupyter Server路径遍历漏洞,CVSS 8.8高危威胁数据科学全生态

一、引言:数据科学基础设施的"心脏出血" Jupyter生态是全球数据科学与AI开发领域的事实标准,据Stack Overflow 2026年开发者调查显示,超过87%的数据科学家和AI工程师日常使用Jupyter Notebook/Lab进行代码开发、数据分析和模型训练…...

18分钟攻陷GitHub!Nx Console投毒事件深度复盘:3800个核心仓库泄露的供应链安全警示

摘要:2026年5月20日,全球最大代码托管平台GitHub遭遇史上最严重的供应链攻击之一。黑客组织TeamPCP通过投毒VS Code扩展市场中的Nx Console v18.95.0版本,仅用18分钟、28次下载就成功渗透GitHub内部网络,窃取了包括Copilot、CodeQ…...

5个理由告诉你为什么Mermaid Live Editor是图表创作的效率神器

5个理由告诉你为什么Mermaid Live Editor是图表创作的效率神器 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...

Android 13 HTTPS抓包失效原因与Proxyman实战解决方案

1. 为什么Android 13上抓HTTPS包突然变难了?从Fiddler/Charles失效说起 你是不是也遇到过:上周还能用Fiddler在Android 12真机上稳稳抓到某电商App的登录接口,升级到Android 13后,所有HTTPS请求全变成“Connection refused”或直接…...

JMeter中稳定获取与传递Token的三种实战方案

1. 为什么token获取总在JMeter脚本里“掉链子”做接口测试的同行应该都踩过这个坑:明明API文档写得清清楚楚,Postman里一调一个准,可一到JMeter里,登录接口返回了token,后续请求却始终401——Header里token字段空着、变…...

STM32F407 ADC采样值跳得厉害?HAL库时钟配置与软件滤波避坑指南

STM32F407 ADC采样值跳得厉害?HAL库时钟配置与软件滤波避坑指南 在嵌入式系统开发中,ADC(模数转换器)的稳定性直接关系到整个系统的测量精度。特别是对于STM32F407这类高性能MCU,当应用于电源监控、医疗设备或工业传感…...