2024-12-21:从魔法师身上吸取的最大能量。用go语言,在一个神秘的地牢里,有 n 名魔法师排成一列。每位魔法师都有一个能量属性,有的提供正能量,而有的则会消耗你的能量。 你被施加了一种诅咒,吸

news/2024/12/21 14:05:25/文章来源:https://www.cnblogs.com/moonfdd/p/18620710

2024-12-21:从魔法师身上吸取的最大能量。用go语言,在一个神秘的地牢里,有 n 名魔法师排成一列。每位魔法师都有一个能量属性,有的提供正能量,而有的则会消耗你的能量。

你被施加了一种诅咒,吸收来自第 i 位魔法师的能量后,你会立即被传送到第 (i + k) 位魔法师。在这个过程中,你会不断进行这种跳跃,直到到达一个不存在的魔法师为止。

换句话说,你可以选择一个起始魔法师,并且以 k 为步长进行跳跃,直到超出魔法师的范围。在这个过程中,你需要计算出可以获得的最大能量。

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

1 <= energy.length <= 100000。

-1000 <= energy[i] <= 1000。

1 <= k <= energy.length - 1。

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

输出: 3。

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

答案2024-12-21:

chatgpt

题目来自leetcode3147。

大体步骤如下:

1.初始化n为energy数组的长度,ans为math.MinInt(即int类型的最小值)。

2.从n-k的位置开始向后遍历数组energy。

3.对于当前位置i,初始化s为0,从i开始向前以步长k遍历每个魔法师。

4.在每个位置上,累加能量值到s中,并更新ans为当前的ans和s中的较大值。

5.返回最终的ans作为结果。

总的时间复杂度:

  • 外层循环迭代次数为k,内层从i位置开始以步长k遍历,需要O(n/k)次操作。

  • 所以总的时间复杂度为O(k * n/k) = O(n)。

总的额外空间复杂度:

  • 除了保存输入参数和几个变量外,算法并没有使用额外的空间存储数据。

  • 因此总的额外空间复杂度是O(1)(常数空间复杂度)。

Go完整代码如下:

package mainimport ("fmt""math"
)func maximumEnergy(energy []int, k int) int {n := len(energy)ans := math.MinIntfor i := n - k; i < n; i++ {s := 0for j := i; j >= 0; j -= k {s += energy[j]ans = max(ans, s)}}return ans
}func main() {energy := []int{5, 2, -10, -5, 1}k := 3fmt.Println(maximumEnergy(energy, k))
}

在这里插入图片描述

Rust完整代码如下:

use std::cmp;fn maximum_energy(energy: Vec<i32>, k: usize) -> i32 {let n = energy.len();let mut ans = i32::MIN;for i in (n - k..n).rev() {let mut s = 0;let mut j = i as isize;while j >= 0 {s += energy[j as usize];ans = cmp::max(ans, s);j -= k as isize;}}ans
}fn main() {let energy = vec![5, 2, -10, -5, 1];let k = 3;println!("{}", maximum_energy(energy, k));
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平替兼容MFRC523|国产13.56MHz智能门锁NFC读卡芯片KYN523

NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品等设备间进行近距离无线通信。通过 NFC 可实现数据传输、移动支付等功能。 KYN523是一款高度集成的工作在 13.56MHZ 下的非接触读写器芯片,支持符合ISO/IEC 14443 TypeA、ISO/IEC 14443 TypeB 协议的非接触读…

redis-cli (error) NOAUTH Authentication required问题解决

1.查找redis-cli所在目录 which redis-cli2.切换到redis-cli目录3.切换到usr/bin 目录 执行以下命令redis-cli -h ip -p port 4. 验证redis登录密码 auth password5.获取redis数据

快速幂优化高精度乘法

NOI 1.6 12 题目描述题目给出的 \(n\) 最大可以取到 \(100\) ,即计算 \(2^{100}\) ,明显是超过 long long 的 \(2^{63}-1\),所以需要使用高精度来计算幂次方的乘法简单的高精度,即每次计算一个小整数乘上一个大整数循环 \(n\) 次,每次对上一次的积都乘以 \(2\) vector<…

Docker网络基础知识

Docker 网络是 Docker 容器之间以及容器与主机或其他网络资源之间通信的基础。Docker网络基础1.默认网络当你启动一个容器是,如果没有特别指定网络,它会自动连接到Docker的默认桥接网络(bridge network)。 这个默认的桥接网络通常被称为bridge,它允许容器之间通过IP地址相…

川土微代理商深圳|CA-IS3740,CA-IS3741,CA-IS3742高性能四通道数字隔离芯片

CA-IS3740,CA-IS3741,CA-IS3742产品特性 •信号传输速率:DCto150Mbps •宽电源电压范围:2.5Vto5.5V •宽温度范围:‐40Cto125C •无需启动初始化 •默认输出高电平和低电平选项 •优异的电磁抗扰度 •高CMTI:150kV/s(典型值) •低功耗,(典型值): ▪电流为1.5mA/通道(@5…

大学8086汇编debug——关于int3断点之后继续调试的方法

预先 在汇编中打入int 3,然后在debug中利用G,就可以一路运行到断点处。 正文 在断点上可以用U来查看上下代码的位置断点后运行 然后用-g=xxxx:xxxx可以运行到下一个断点,或是直接运行至结束 还可以用-t=xxxx:xxxx逐步运行 注意:xxxx:xxxx是int 3下一个命令的地址

sunny替换响应体

本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18620658

AuthBy pg walkthrough Intermediate window

nmap └─# nmap -p- -A -sS 192.168.226.46 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-21 01:01 UTC Stats: 0:01:06 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 52.12% done; ETC: 01:04 (0:01:00 rem…

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第十三周学习总结

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第十三周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十三周作业)这个作业…

纪念 Jonathan Barzilai

我在读博期间研究了关于非线性优化算法中的Barzilai-Borwein(BB)步长。正如我的导师安老师所言:梯度下降法是优化算法的基石(只考虑一般可微的目标函数)。在该算法中,迭代点每次沿着当前的负梯度方向"走一步",一直迭代下去,逼近最优解(当然是局部的)。一个自然地…

省选数学专题

昌吉市传教士出金身难度升序排序(大概吧)。 [AGC016C] +/- Rectangle 签,虽然国集作业。 贪心是显然的,不说了,这里只考虑正数如何填。 如果\(H\times W-\left\lfloor\frac{H}{h}\right\rfloor\times h\times \left\lfloor\frac{W}{w}\right\rfloor\times w\le \left\lflo…