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

力扣(leetcode)每日一题 3259 超级饮料的最大强化能量|动态规划

3259. 超级饮料的最大强化能量

题干

来自未来的体育科学家给你两个整数数组 energyDrinkAenergyDrinkB,数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。

你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到另一种,你需要等待一小时来梳理身体的能量体系(在那个小时里你将不会获得任何强化能量)。

返回在接下来的 n 小时内你能获得的 最大 总强化能量。

注意 你可以选择从饮用任意一种能量饮料开始。

示例 1:

**输入:**energyDrinkA = [1,3,1], energyDrinkB = [3,1,1]

**输出:**5

解释:

要想获得 5 点强化能量,需要选择只饮用能量饮料 A(或者只饮用 B)。

题解

当要切换路线的时候,付出的代价是这个格子的饮料无法获取

直接憋动态规划,当前依赖上一个位置

public static long maxEnergyBoost(int[] energyDrinkA, int[] energyDrinkB) {int length = energyDrinkA.length;long[][] dp = new long[length + 1][2];// 0为a分支   1为b分支for (int index = length - 1; index >= 0; index--) {long tmp1 = dp[index + 1][0] + energyDrinkA[index]; // 还是选择a分支long tmp2 = dp[index + 1][1];  // 切换到b分支 当前小时无法获取能量dp[index][0] = Math.max(tmp2, tmp1);long tmp3 = dp[index + 1][1] + energyDrinkB[index];// 还是选择b分支long tmp4 = dp[index + 1][0]; 切换到a分支 当前小时无法获取能量dp[index][1] = Math.max(tmp3, tmp4);}return Math.max(dp[0][0], dp[0][1]);}

进行一下优化,节省内存空间,写法抽象些

    public static long maxEnergyBoost(int[] energyDrinkA, int[] energyDrinkB) {int length = energyDrinkA.length;long aBranch = 0;long bBranch = 0;long tmp;for (int index = length - 1; index >= 0; index--) {tmp = aBranch;aBranch = Math.max(aBranch + energyDrinkA[index], bBranch);bBranch = Math.max(bBranch + energyDrinkB[index], tmp);}return Math.max(aBranch, bBranch);}

总结

常规的动态规划题目

http://www.lryc.cn/news/473899.html

相关文章:

  • Webserver(2.7)内存映射
  • vue3父子组件传值,子组件暴漏方法
  • Linux_04 Linux常用命令——tar
  • Java项目实战II基于Java+Spring Boot+MySQL的编程训练系统(源码+数据库+文档)
  • Rust:文档注释 //! 和 ///
  • 练习LabVIEW第二十七题
  • 使用React构建现代Web应用
  • 【系统设计】Merkle 算法在 Git 中的应用:深入理解与实践
  • 【umi max】关于umi构建的项目在本地服务运行正常,但是部署时无致命报错却白屏,html文档的#root容器没有子元素的原因及解决办法
  • Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
  • 蓝牙MCU蓝牙医疗检测相关案例
  • pytorch环境安装和更新,额外装cuda有什么意义
  • 【观成科技】APT组织常用开源和商业工具加密流量特征分析
  • Java开发者的Python快速进修指南:面向对象进阶
  • 【商汤科技-注册/登录安全分析报告】
  • 诱骗取电快充协议芯片,支持与其它 MCU 共用 D+D-网络和电脑传输数据
  • Java Executor ScheduledExecutorService 源码
  • 【力扣 + 牛客 | SQL题 | 每日6题】牛客SQL热题 + 力扣hard
  • 前端常见错误
  • Edge 浏览器插件开发:图片切割插件
  • 银河麒麟v10 xrdp安装
  • Leetcode 删除有序数组中的重复项 Ⅱ
  • 大模型学习笔记------什么是大模型
  • 【unique_str 源码学习】
  • flask第一个应用
  • 华为OD机试真题(Python/JS/C/C++)- 考点 - 细节
  • 【C++刷题】力扣-#628-三个数的最大乘积
  • Java项目实战II基于Java+Spring Boot+MySQL的工程教育认证的计算机课程管理平台(源码+数据库+文档)
  • 基于微信小程序实现信阳毛尖茶叶商城系统设计与实现
  • 设计一个灵活的RPC架构