登录注册 剑阁旅游网欢迎您!在旅行中寻找最年轻的自己
当前位置:首页 > 旅游景点 > 

leetcode_lcp30_go_魔塔游戏

编辑: 时间:2024-12-26 14:24:09 浏览量:

很多朋友对于leetcode_lcp30_go_魔塔游戏和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

每个房间的补血道具/怪物对血量的影响记录在数组nums中,其中正数代表道具的补血值,即血量增加对应的值;

负数表示怪物造成的伤害值,即血量减少对应的值; 0表示房间对血量没有影响。

小扣的初始血量为1,没有上限。假设小口原本打算按房间号升序访问所有房间来补血/杀怪,以保证血量始终为正,

小口需要调整房间的进出顺序。一次只能调整一个怪物房间(负号房间)到访问顺序的末尾。

请返回到那个小按钮,至少需要调整几次才能成功访问所有房间。如果调整顺序后仍无法进入所有房间,请返回-1。

示例1: 输入:nums=[100,100,100,-250,-60,-140,-50,-50,100,150] 输出:1

解释:初始健康卷为1,至少需要将nums[3]调整到访问序列的末尾才能满足要求。

示例2:输入:nums=[-200,-300,400,0] 输出:-1

说明:即使调整访问顺序也无法完成对所有房间的访问。

提示:1=nums.length=10^5

-10^5=数字[i]=10^5

解题思路分析

1. 堆;时间复杂度O(nlog(n)),空间复杂度O(n)

func magicTower(nums []int) int { intHeap :=make(IntHeap, 0) heap.Init(intHeap) 血液:=0 sum :=0 res :=0 for i :=0;我len(nums); i++ { sum=sum + nums[i] if nums[i] 0 { heap.Push(intHeap, nums[i]) if Blood+nums[i] 0 { res++ minValue :=heap.Pop(intHeap).(int ) 血液=血液- minValue } } 血液=血液+ nums[i] } if sum 0 { return -1 } return res}type IntHeap []intfunc (h IntHeap) Len() int { return len(h)}//小根堆、大根堆变换方向func (h IntHeap) Less (i, j int) bool { return h[i] h[j]}func (h IntHeap) Swap(i, j int) { h[i] , h [j]=h[j], h[i]}func (h *IntHeap) Push(x 接口{}) { *h=追加(*h, x.(int))}func (h *IntHeap) ) Pop () 接口{} { value :=(*h)[len(*h)-1] *h=(*h)[:len(*h)-1] 返回值} 2. 堆;时间复杂度O( nlog(n)),空间复杂度O(n)

用户评论

一尾流莺

这道题虽然思路比较简单,但是数据范围还是蛮大的,我用 Go 写代码的时候有点卡性能,优化了一下算法和时间复杂度终于过了测试用例!

    有18位网友表示赞同!

无寒

第一次刷 LeetCode 的 Go 题目,感觉语言风格还是挺舒服的,这个“魔塔游戏”真是太有趣了,代码实现起来也很巧妙!

    有9位网友表示赞同!

神经兮兮°

我觉得这道题的设计思想还不错,考验的是我们对贪心的理解,可惜我思路卡住了,看了一下解题报告才明白作者怎么用贪心策略一步步解决问题的。

    有19位网友表示赞同!

莫阑珊

LeetCode 的 Go 题目越来越难了!这个 "魔塔游戏" 简直就是噩梦级别,感觉代码逻辑无比复杂,花了好多时间才勉强过掉……

    有5位网友表示赞同!

龙吟凤

这题我直接看了一下别人代码,发现原来是用 DFS 来解决的,这种思路还是挺好理解的,我也稍微尝试了一下改写成 BFS 的方法,最终通过测试用例了!

    有6位网友表示赞同!

清羽墨安

这个 “魔塔游戏” 感觉很像一些古老的RPG 游戏设计,确实很有趣的设计理念。leetcode_lcp30 题目难度适中,能锻炼一下代码逻辑思维能力。

    有18位网友表示赞同!

仰望幸福

对于喜欢解谜游戏的人来说,这道题应该非常有趣呢! 模拟一个 "魔塔游戏" 的过程,需要比较强的逻辑推理能力!

    有12位网友表示赞同!

ヅ她的身影若隐若现

感觉这道 LCP30 去年的题目还是挺有用的啊,考察了搜索和贪心的算法,建议认真刷起来~

    有20位网友表示赞同!

栀蓝

LeetCode 越来越注重对 Go 语言的考查了,看来未来想要在科技领域竞争,掌握 Golang 的能力相当重要!这个 "魔塔游戏" 确实很有代入感,代码实现过程中很有挑战性!

    有9位网友表示赞同!

算了吧

这道题我一开始卡了很久啊,感觉 "魔塔游戏" 设计的太复杂了,后来恍然大悟,用状态压缩的方法可以简化很多操作,终于写通了!

    有5位网友表示赞同!

虚伪了的真心

这个 "魔塔游戏" 的设计理念真的很棒!LeetCode 这次出了一个很特别的游戏主题题目,让人感觉很有新鲜感。代码实现过程也把我锻炼了一下...

    有14位网友表示赞同!

_心抽搐到严重畸形っ°

我个人觉得这道题逻辑有点繁琐,如果把 "魔塔游戏" 简化成几个关键点的交互方式,会更容易理解和实现。

    有6位网友表示赞同!

桃洛憬

刷leetcode 已经成为我生活中的一部分了!每次遇到新的 “魔塔游戏” 都让我兴奋不已,感受着算法能力的提升~

    有7位网友表示赞同!

我就是这样一个人

这道题测试的是贪心的应用,难度比较大,需要思考很多细节问题,不过通过之后感觉很有成就感,"魔塔游戏" 的设计也是非常巧妙的。

    有15位网友表示赞同!

等量代换

我更喜欢一些经典的LeetCode题目,比如排序、搜索等等,这个 "魔塔游戏" 的设计有点过于生僻,没那么容易上手……

    有8位网友表示赞同!

来自火星的我

刷 LeetCode 的过程中遇到各种各样的 "魔塔游戏" ,每道题都是一场思考之旅,让我学习到很多新的编程技巧!

    有15位网友表示赞同!

颓废i

我觉得这道题的描述不够清晰, "魔塔游戏" 的玩法规则没太明白,导致我的代码直接就写通了,但是结果却不对......

    有9位网友表示赞同!

伤离别

这次 LeetCode 的“魔塔游戏” 难度有点高,我花了几天时间才理解思路,希望以后出的题目能更加友好!

    有16位网友表示赞同!

青瓷清茶倾城歌

这个 "魔塔游戏" 简直是逻辑思维的大挑战啊!虽然最后通关了,但过程还是比较痛苦......

    有20位网友表示赞同!

当地美食

留言跟帖

(网友评论仅供其表达个人看法,并不表明本站立场)

网友评论