2024-12-21:从魔法师身上吸取的最大能量。用go语言,在一个神秘的地牢里,有 n 名魔法师排成一列。每位魔法师都有一个能量属性,有的提供正能量,而有的则会消耗你的能量。 你被施加了一种诅咒,吸
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:
题目来自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 名魔法师排成一列。每位魔法师都有一个能量属性,有的提供正能量,而有的则会消耗你的能量。 你被施加了一种诅咒,吸的更多相关文章
- 2015.12.21~2015.12.24真题回顾!-- HTML5学堂
2015.12.21~2015.12.24真题回顾!-- HTML5学堂 山不在高,有仙则名!水不在深,有龙则灵!千里冰封,非一日之寒!IT之路,须厚积薄发!一日一小练,功成不是梦!小小技巧,尽在HT ...
- 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)
写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...
- 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 ...
- 2021.12.21 eleveni的刷题记录
2021.12.21 eleveni的刷题记录 0. 有意思的题 P6701 [POI1997] Genotype https://www.luogu.com.cn/problem/P6701 状压优 ...
- [问题2014A01] 解答一(第一列拆分法,由张钧瑞同学提供)
[问题2014A01] 解答一(第一列拆分法,由张钧瑞同学提供) (1) 当 \(a=0\) 时,这是高代书复习题一第 33 题,可用升阶法和 Vander Monde 行列式来求解,其结果为 \[ ...
- [问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供)
[问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供) \[|A|=\begin{vmatrix} 1 & x_1^2-ax_1 & x_1^3-ax_1^2 &am ...
- 写了一个Windows API Viewer,提供VBA语句的导出功能。提供两万多个API的MSDN链接内容的本地查询
始出处:http://www.cnblogs.com/Charltsing/p/APIViewer.html QQ:564955427,QQ群:550672198 世面上的API Viewer已经不少 ...
- 对于一般情况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)种
- ant常用的内置 task转自https://www.cnblogs.com/baicj/archive/2015/12/21/5063608.html
ant 例如: <target name="callProjectB"> <echo message="In projectA calling proj ...
- SCRUM 12.21
从爬虫遇到的问题中我们学会了: 1.有的网站是有反爬虫机制的,外卖网站(我们猜测基本所有盈利性质的网站可能都是)全部都有. 2.我们对于反爬虫机制有了一定的了解. 本次爬虫测试中,我们最后连美团网 ...
随机推荐
- .Net 依赖注入深入探索,做一个DI拓展,实现一个简易灵活的 自动依赖注入框架
一.依赖注入相关知识 1.1.依赖注入的原理和优点 依赖注入(DI),是IOC控制反转思想 的实现.由一个DI容器,去统一管理所有的服务生命周期,服务的创建.销毁.获取,都是由DI容器去处理的. 依赖 ...
- Blazor 子组件与父组件通过 ChildEvents 传递数据的方法
想要实现 Blazor 子组件向父组件传递数据, 参考 痴者工良的博文所描述的方式, .Net 5.0 下编译未能通过, 于是先修改一下, 简化为光触发事件通知而不传值 子组件 Child.razor ...
- composer 执行脚本时报错:Error: You made a reference to a non-existent script @php artisan package:discover
composer 执行脚本时报错:Error: You made a reference to a non-existent script @php artisan package:discover. ...
- 2022年6月中国数据库排行榜:TiDB卷土重来摘桂冠,达梦蛰伏五月夺探花
排行榜风云又起,各产品墨坛论剑.2022年6月的 中国数据库流行度排行榜 再掀风云,6月排行榜共有231个数据库参与排名,两名新成员的加入,注入了新活力.本月排行榜用一句话可以概括为:TiDB卷土重来 ...
- C#扩展方法 Where Any Count Signal SignalOrDefault First 等方法的使用
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- 41.key发生变化,dom还会复用吗
会复用但是可能会产生没有必要的真实DOM更新 ,会降低渲染效率 :比如使用 index 作为 key 值 :
- Nuxt.js 应用中的 ready 事件钩子详解
title: Nuxt.js 应用中的 ready 事件钩子详解 date: 2024/10/12 updated: 2024/10/12 author: cmdragon excerpt: read ...
- es之增删改查
查询 index: GET task_results/_search/ 普通查询: {"query":{"bool":{"must":[{& ...
- 【磐维数据库】Oracle(透明网关)访问磐维数据库(PanWeiDB)
磐维数据库(PanWeiDB)是由中国移动基于中国本土开源数据库openGauss打造的自研数据库产品,主要面向ICT基础设施.它具有高性能.高可靠性.高安全性和高兼容性的特点,能够支持集中式.分布式 ...
- AI五子棋_06 坐标表示到图形表示的算法 Python实现
AI五子棋 第六步 恭喜你到达第六步! 你已经成功实现了公钥体系最为关键的部分.现在服务器相信你就是你了,下面开始你的战斗. 五子棋的棋盘有15×15个交点,一共有225个交点,我们可以在每一个交点上 ...