首页 > 其他分享 >100274. 从魔法师身上吸取的最大能量

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

时间:2024-05-12 11:41:35浏览次数:21  
标签:100274 int res energy 魔法师 length result 吸取

在神秘的地牢中,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;
    }
}

 

 

标签:100274,int,res,energy,魔法师,length,result,吸取
From: https://www.cnblogs.com/ak918xp/p/18187629

相关文章

  • 牛客 215E 黄魔法师 题解
    Description给出\(n,k\),求一个长度为\(n\)的数组\(a\),满足有恰好\(k\)对数对\((i,j)(1\leqi<j\leqn)\)满足\(a_i+a_j\)为完全平方数。如果不存在,输出\(-1\)。linkSolution显然如果\(k>\binom{n}{2}\)就一定无解。构造时会发现肯定要尽量弄成相同的......
  • [THUSCH2017] 大魔法师
    THUSCH2017]大魔法师题目描述大魔法师小L制作了$n$个魔力水晶球,每个水晶球有水、火、土三个属性的能量值。小L把这$n$个水晶球在地上从前向后排成一行,然后开始今天的魔法表演。我们用$A_i,B_i,C_i$分别表示从前向后第$i$个水晶球(下标从$1$开始)的水、火、土的能......
  • 配置隧道代理HTTP:手动设置与自动配置,一篇文章让你成为网络魔法师!
    嘿,小伙伴们!今天我们要一起探讨一个激动人心的话题——如何配置隧道代理HTTP。这个话题可能听起来有点复杂,但别担心,我会用最简单的方式为你解释。首先,让我们来了解一下什么是隧道代理HTTP。简单来说,它就像是一条魔法通道,能帮助我们更好地浏览网页、保护隐私、甚至突破地域限制。配置......
  • git--从ysyx中吸取经验教训
    起因:当时是在做ysyx中红白模拟机部分运行脚本执行不成功报错报了两处一个是断言错误一个是makefile里的一个image的变量后面在进行答疑会由同学和助教指出是因为分支的错误我也从来没想过这个错误并且过程中debug时候对于git指令显得尤其不熟悉下面大概总结了比较经典的......
  • [THUSCH2017] 大魔法师
    前期准备1.熟练的掌握区间修改线段树2.对矩阵乘法有部分的了解,知道如何使用3.对卡常十分精通题目大意题目给定\(n\)个三元组,每个三元组包含\(A\)、\(B\)、\(C\)三个元素,一共进行\(m\)次操作,分别是下面七种之一:1.令给定区间内,\(A_i=A_i+B_i\)2.令给定区间内,\(B_i=B......
  • WebSocket魔法师:打造实时应用的无限可能
    1、背景在开发一些前端页面的时候,总是能接收到这样的需求:如何保持页面并实现自动更新数据呢?以往的常规做法,是前端使用定时轮询后端接口,获取响应后重新渲染前端页面,这种做法虽然能达到类似的效果,但是依然有很多缺点,缺点就不在这里说了,感兴趣的小伙伴可以自行查阅一下。现在让我们......
  • Capture One 23:RAW图像的魔法师,开启你的摄影艺术之旅 mac/win版
    CaptureOne23,这不仅仅是一款RAW图像编辑软件,更是一款为你开启摄影艺术之旅的魔法师。这个强大的工具将带你进入RAW图像的世界,让你自由地探索并创造出令人惊艳的摄影作品。无论你是专业摄影师,还是摄影爱好者,CaptureOne23都能根据你的需求提供全面的解决方案。→→↓↓载Captur......
  • std::forward:完美转发的魔法师
    大家好,今天我们来谈谈一个C++11引入的强大工具:std::forward。如果你曾经头疼于如何设计一个函数,让它能同时接受左值和右值,且能保留参数原始的性质,那么今天的主题绝对是你的救星。1、std::forward是什么?简单来说,std::forward是一种用于实现完美转发(PerfectForwarding)的机制。它......
  • [THUSCH2017] 大魔法师 卡题记录
    题目:fzqoj-luogu前情提示: 此题极度卡常!!!,否则你就会像我这个蒟蒻一样卡题\(3h\):死亡记录前置知识:  1.线段树的区间修改,不会的可以点这-基础:进阶  2.基本的矩阵乘法:Fibonacci题解部分对于题目给出的6种操作,我们可以用线段树与矩阵乘法来维护思路维护一个四......
  • vue吸取图片主题色---ColorThief
    npmi--savecolorthief<template><div><img:src="coverLarge"crossorigin="anonymous"alt=""/></div></template><script>importColorThieffrom'colorthief'exportd......