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 main

import (
"fmt"
"math"
) func maximumEnergy(energy []int, k int) int {
n := len(energy)
ans := math.MinInt
for i := n - k; i < n; i++ {
s := 0
for 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 := 3
fmt.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));
}

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

  1. 2015.12.21~2015.12.24真题回顾!-- HTML5学堂

    2015.12.21~2015.12.24真题回顾!-- HTML5学堂 山不在高,有仙则名!水不在深,有龙则灵!千里冰封,非一日之寒!IT之路,须厚积薄发!一日一小练,功成不是梦!小小技巧,尽在HT ...

  2. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  3. 11:12:21.924 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.

    11:12:21.924 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class or ...

  4. 2021.12.21 eleveni的刷题记录

    2021.12.21 eleveni的刷题记录 0. 有意思的题 P6701 [POI1997] Genotype https://www.luogu.com.cn/problem/P6701 状压优 ...

  5. [问题2014A01] 解答一(第一列拆分法,由张钧瑞同学提供)

    [问题2014A01] 解答一(第一列拆分法,由张钧瑞同学提供) (1)  当 \(a=0\) 时,这是高代书复习题一第 33 题,可用升阶法和 Vander Monde 行列式来求解,其结果为 \[ ...

  6. [问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供)

    [问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供) \[|A|=\begin{vmatrix} 1 & x_1^2-ax_1 & x_1^3-ax_1^2 &am ...

  7. 写了一个Windows API Viewer,提供VBA语句的导出功能。提供两万多个API的MSDN链接内容的本地查询

    始出处:http://www.cnblogs.com/Charltsing/p/APIViewer.html QQ:564955427,QQ群:550672198 世面上的API Viewer已经不少 ...

  8. 对于一般情况X1+X2+X3+……+Xn=m 的正整数解有 (m-1)C(n-1) 它的非负整数解有 (m+n-1)C(n-1)种

    对于一般情况X1+X2+X3+……+Xn=m 的正整数解有 (m-1)C(n-1) 它的非负整数解有 (m+n-1)C(n-1)种

  9. ant常用的内置 task转自https://www.cnblogs.com/baicj/archive/2015/12/21/5063608.html

    ant 例如: <target name="callProjectB"> <echo message="In projectA calling proj ...

  10. SCRUM 12.21

    从爬虫遇到的问题中我们学会了: 1.有的网站是有反爬虫机制的,外卖网站(我们猜测基本所有盈利性质的网站可能都是)全部都有. 2.我们对于反爬虫机制有了一定的了解.   本次爬虫测试中,我们最后连美团网 ...

随机推荐

  1. 4.3 等比数列及其前n项和

    \(\mathbf{{\large {\color{Red} {欢迎到学科网下载资料学习}} } }\)[[高分突破系列] 高二数学下学期同步知识点剖析精品讲义! \(\mathbf{{\large ...

  2. CRLF the next time Git touches it warning: in the working copy of '', LF will be replaced by CRLF the next time Git touches it warning: in the working copy of

    git config --global core.autocrlf true

  3. 关于 apt 的一些命令

    apt update 用于 更新 包索引,包列表 apt install -y open-vm-tools-desktop fuse 安装 vm-tools 工具

  4. Transformer的Pytorch实现【1】

    使用Pytorch手把手搭建一个Transformer网络结构并完成一个小型翻译任务. 首先,对Transformer结构进行拆解,Transformer由编码器和解码器(Encoder-Decode ...

  5. mysql+navicat+eclipse+jsp

    mysql server 5.5安装 微信公众号搜软件智库,然后找到mysql 5.5 百度网盘下载对应自己电脑版本的mysql 百度网盘:http://pan.baidu.com/s/1jI5oB6 ...

  6. MISC 高手进阶区 1-5

    1.reverseME 题目描述 无 附件 一个 .jpg 的图片 是一个flag字符串的图片镜像. reverse V-T If you reverse the order of a set of ...

  7. Java中List 删除元素

    在Java中,使用List时想要删除某个特定个元素怎么办?很好办!因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除list中的某个元素.但是list自带的有一 ...

  8. JS 通过年份获取月,季度,半年度,年度

    原文请关注公众号 "酒酒酒酒"​,关注公众号 回复  "JS 通过年份获取月,季度,半年度,年度" 可获取源代码 功能描述: 实例化一个函数,给函数内传递不同的 ...

  9. Redis的ZSet底层数据结构,ZSet类型全面解析

    文章目录 一.ZSet有序集合类型 1.1 简介 1.2 应用场景 1.3 底层结构 1.4 ZSet常用命令 二.ZSet底层结构详解 2.1 数据结构 2.2 压缩列表ZipList 2.3 跳表 ...

  10. isObjectLike:检查 value 是否是 类对象。 如果一个值是类对象,那么它不应该是 null,而且 typeof 后的结果是 "object"

    function isObjectLike(value) { return value != null && typeof value == 'object';}