100274. 从魔法师身上吸取的最大能量

news/2024/9/27 10:20:57

在神秘的地牢中,n 个魔法师站成一排。每个魔法师都拥有一个属性,这个属性可以给你提供能量。有些魔法师可能会给你负能量,即从你身上吸取能量。

你被施加了一种诅咒,当你从魔法师 i 处吸收能量后,你将被立即传送到魔法师 (i + k) 处。这一过程将重复进行,直到你到达一个不存在 (i + k) 的魔法师为止。

换句话说,你将选择一个起点,然后以 k 为间隔跳跃,直到到达魔法师序列的末端,在过程中吸收所有的能量。

给定一个数组 energy 和一个整数k,返回你能获得的 最大 能量。

 

示例 1:

输入: energy = [5,2,-10,-5,1], k = 3

输出: 3

解释:可以从魔法师 1 开始,吸收能量 2 + 1 = 3。

示例 2:

输入: energy = [-2,-3,-1], k = 2

输出: -1

解释:可以从魔法师 2 开始,吸收能量 -1。

 

提示:

  • 1 <= energy.length <= 105
  • -1000 <= energy[i] <= 1000
  • 1 <= k <= energy.length - 1

 

 

思路1 模拟

时间复杂度On2

class Solution {public static int maximumEnergy(int[] energy, int k) {int[] record = new int[energy.length];for(int i =0 ; i < energy.length ; i++){int pos = i;while (pos < energy.length && pos >= 0) {record[i] += energy[pos];pos += k;}}int res = Integer.MIN_VALUE;for(int i = 0 ; i < record.length ; i++){res = Math.max(res, record[i]);}return res;}
}

 

 

思路2

反向倒推,时间复杂度On

class Solution {public static int maximumEnergy(int[] energy, int k) {int[] result = new int[energy.length];int res = Integer.MIN_VALUE;for(int i=energy.length-1;i>=0;i--){if(i+k>=energy.length){result[i] = energy[i];}else{result[i] = energy[i] + result[i+k];}if(result[i]>res){res = result[i];}}return res;}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Lua热更学习--使用toLua中的协程

[6] C#访问调table类中的成员变量和函数 访问table中的变量和函数 lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和function的获取调用,这里尝试获取调用。 依然是如此,此种调用方式获取到的table中的函数是引用拷贝。 Main.lua脚本…

consul部署

下载二进制包 下载地址:https://developer.hashicorp.com/consul/install https://releases.hashicorp.com/consul/1.18.1/consul_1.18.1_linux_amd64.zip下载解压wget https://releases.hashicorp.com/consul/1.18.1/consul_1.18.1_linux_amd64.zip [root@mcw12 mcw]# ls con…

TCP的四次挥手过程

TCP连接是双向传输的对等的模式(全双工模式),就是说双方都可以同时向对方发送或接收数据。而断开的时候,也是双方都可以主动断开,此时需要经过四次挥手的过程,流程如下图所示...TCP连接是双向传输的对等的模式(全双工模式),就是说双方都可以同时向对方发送或接收数据。…

Android开发Kotlin学习笔记

为了做《基于安卓定位的考勤系统》,学了一些杂乱的知识,在这里简单记录一下。除了在C#桌面应用开发中感性的体会到了些XML布局的知识以及课上学习的Java知识,其他也算是零基础了。 Google Android Developer的课程 2023/10/25 :跟着官方文档先快速入门一下基本内容。截至目…

SpringBoot速记

本篇以SpringBoot快速构建一个基础项目,在构建的同时记录相关的知识。常见的架构图: 其中, config中可以引入第三方的jar包 controller中存放控制类一个简单的例子如下: mapper中存放对数据库的操作接口 pojo中是实体对象类,常与数据表对应 service中存放服务类: xml中…

容器技术:优化软件测试流程的利器

前言 你是否曾想过,如何让你的应用程序在任何地方都能够运行,而无需担心各种环境的兼容性问题?之前,我们可能是想着用虚拟机,但是现在我们有了其他选择,不知道你是否听说过容器技术,乍一听却感到有些晦涩难懂?别担心,本文将为你揭开容器技术的神秘面纱,让你轻松理解这…

【攻防技术系列】-- Python沙箱逃逸

Python 是一种强大而灵活的编程语言,但在某些情况下,可能需要运行不受信任的代码,同时又希望限制它的行为,以防止对系统的不良影响。这时,Python 沙箱就成为一种有用的工具,它可以帮助你在安全的环境中运行不受信任的代码。本文将探讨 Python 沙箱的概念、常见的沙箱技术…