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

LeetCode每日一题 | 1696. 跳跃游戏 VI

文章目录

    • 题目描述
    • 问题分析
    • 程序代码

题目描述

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。

一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i + 1, min(n - 1, i + k)] 包含 两个端点的任意位置。

你的目标是到达数组最后一个位置(下标为 n - 1 ),你的 得分 为经过的所有数字之和。

请你返回你能得到的 最大得分 。

问题分析

状态表示:dp[i]表示到达位置 i 的最大得分

初始状态:dp[0] = nums[0]

状态计算:dp[i] = max{dp[j]},其中max(0,i−k) <= j < i

其中前 k 步的最大值,可以用一个双端队列进行维护。

程序代码

func maxResult(nums []int, k int) int {n := len(nums)dp := make([]int, n)dp[0] = nums[0]// 双端队列q := make([]int, n)qi, qj := 0, 1for i := 1; i < n; i++ {// 容量超了for qi < qj && q[qi] < i - k {qi++}dp[i] = dp[q[qi]] + nums[i]// 比你年轻,能力还比你强for qi < qj && dp[q[qj - 1]] <= dp[i] {qj--}q[qj] = iqj++}return dp[n-1]
}
http://www.lryc.cn/news/294618.html

相关文章:

  • 大型装备制造企业案例分享——通过CRM系统管理全球业务
  • 16.docker删除redis缓存数据、redis常用基本命令
  • 【开源】基于JAVA+Vue+SpringBoot的教学资源共享平台
  • 如何使用Python + 百度翻译API 自动大批量免费翻译Excel文件中的外语内容
  • ONLYOFFICE:一站式办公,探索高效办公新境界
  • nginx反向代理----->微服务网关----->具体微服务
  • 怎么清理电脑内存?详细图文教程分享!
  • CKS1.28【1】kube-bench 修复不安全项
  • 6.s081 学习实验记录(五)traps
  • 探索设计模式的魅力:从单一继承到组合模式-软件设计的演变与未来
  • 文心一言4.0API接入指南
  • Python循环语句——while循环的嵌套应用
  • 数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)
  • Centos 7系统安装proftpd-1.3.8过程
  • DevExpress ASP.NET Web Forms v23.2最新版本系统环境配置要求
  • 5分钟快速掌握 XML (Extensible Markup Language)
  • Python中的HTTP代理服务器和客户端的区别与联系
  • 升级Oracle 单实例数据库19.3到19.22
  • 在Vue中如何动态绑定class和style属性
  • 使用Docker部署DashDot服务器仪表盘并结合cpolar实现公网监测服务器
  • Android kernel logcat时间戳显示错乱修改
  • 2024年考PMP还有什么用?
  • 解决zabbix图像中文乱码
  • centos间文件传输
  • 2.0 Zookeeper 安装配置
  • Matomo 访问图形显示异常
  • MySQL学习记录——사 表结构的操作
  • 【华为 ICT HCIA eNSP 习题汇总】——题目集12
  • Redis发布订阅及事务管理
  • 设计模式第五天|代理模式 7-小明买房子 装饰模式 8-咖啡加糖