LCP 30. 魔塔游戏

难度中等10收藏分享切换为英文接收动态反馈

小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于数组 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 <= nums[i] <= 10^5
/**优先队列+贪心,题解区好理解的答复https://leetcode-cn.com/problems/p0NxJO/solution/java-tan-xin-you-xian-dui-lie-yi-dong-sh-vz2o/如何贪心使得移动次数最少?思考2个问题:什么时候移动?前缀和 ≤ 0 时移动哪个元素?已经遇到的所有负数中最小的元素
**/class Solution {public int magicTower(int[] nums) {long preSum=0;long totalSum=0;int count=0;PriorityQueue<Integer> minheap=new PriorityQueue<Integer>();for(int i=0;i<nums.length;i++){if(nums[i]<0){minheap.add(nums[i]);}preSum+=nums[i];totalSum+=nums[i];while(preSum<0&&!minheap.isEmpty()){preSum-=minheap.poll();count++;}}if(totalSum<0)return -1;return count;}
}

LCP21 魔塔游戏相关推荐

  1. LeetCode LCP 30. 魔塔游戏(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1. 每个房间的补血道具/怪物对于血量影响记于数组 nums,其中: 正数表示道具补血数 ...

  2. python3.7魔塔游戏_基于Funcode平台的“火锅版魔塔”游戏开发与设计

    2019 年第 2 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Funcode 平台的"火锅版魔塔"游戏开发与设计 ...

  3. java魔塔_基于java的魔塔游戏的设计与实现论文.docx

    毕业设计(论文)题目: 基于java的魔塔游戏的设计与实现 毕业设计(论文)要求及原始数据(资料): 1.了解和运用Java面向对象的特性: 2.熟练掌握模块化设计的思想,锻炼使用java语言的能力: ...

  4. HTML5 canvas 游戏设计:创建一个经典的魔塔游戏

    整个项目都已经开源,项目地址:https://github.com/m8705/MAGIC-TOWER-JS 注:这是我高中时候的作品,BUG 很多,已经不再更新了.下载项目到本地就能玩. 前言 魔塔 ...

  5. 用C语言实现CLI界面的魔塔游戏

    简介 本着开源的精神,我分享下我做的数据结构大作业,我当时选择的是 游戏设计题目,由于魔塔基础的机制不太复杂,所以就借着大作业设计了个简易的魔塔游戏.这是游戏界面: 以下是我当时大作业内容: 我把大作 ...

  6. C课程设计——魔塔游戏

    文章目录 纯C实现命令行魔塔游戏 项目地址 关于 特性 详细设计 关键架构 创建工厂模块 碰撞检测模块 场景模块 基类模块 子类模块 英雄人物模块 怪物模块 ... 纯C实现命令行魔塔游戏 详细流程图 ...

  7. ​​力扣——魔塔游戏​

    题目概述: 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1.每个房间的补血道具/怪物对于血量影响记于数组 nums,其中正数表示道具补血数值,即血量增加对应数值:负数表示怪物造成 ...

  8. LCP 30.魔塔游戏

    题目 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1.每个房间的补血道具/怪物对于血量影响记于数组 nums,其中正数表示道具补血数值,即血量增加对应数值:负数表示怪物造成伤害值 ...

  9. 力扣刷题 - LCP 30. 魔塔游戏

    题目: 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1.每个房间的补血道具/怪物对于血量影响记于数组 nums,其中正数表示道具补血数值,即血量增加对应数值:负数表示怪物造成伤害 ...

最新文章

  1. Asp.net 面向接口可扩展框架之核心容器
  2. linux查看帮助信息,命令帮助信息的获取
  3. Java实验9 T3.对二进制数据文件中的所有数据求和
  4. 深度学习解决NLP问题:语义相似度计算
  5. C++赋值运算符重载函数(operator=)
  6. 我用.Net做的一些系统及参与测试的系统
  7. 数字图像处理(三):函数fspecial
  8. XXL-JOB任务调度
  9. C语言 一步步教你做一个带有图形界面的冒险小游戏
  10. vue 页脚_前端必懂之Sticky Footer(粘性页脚)
  11. STM32L051测试 (三、I2C协议设备的添加测试)
  12. 【Java】maven-shaded-plugin超详细详解
  13. [编程入门]猴子吃桃的问题(JAVA解法)
  14. 学神、学霸的学生,靠的不是1%的天赋和智商,更不是努力,而是它
  15. viterbi,维特比算法通俗理解
  16. 综述 | 实例分割研究
  17. android 点9图使用教程,Android Studio中点9图片的详细使用教程
  18. 用python写一个简答的英文文章分析程序
  19. sheng的学习笔记-Vector源码分析
  20. 面试字节跳动测试岗位一般问什么测试点_字节跳动面试问题集合

热门文章

  1. 树莓派自动挂载usb移动存储设备
  2. 线性表的基本操作及应用(单链表的创建、插入、删除、查找、显示)
  3. (java)防止数字被转换成科学计数法解决方法
  4. 潇洒郎: Cuda9.0 100%安装pytorch 成功
  5. 改变社交与工作状态的新型软件
  6. 根治Windows 2003操作系统登录及关机麻烦
  7. 如何自建微信外卖平台_怎么在微信上做外卖?
  8. 动态规划之背包问题(JAVA)
  9. ROS工业机器人 ROS-I Kinetic培训课程
  10. [HY000][1366] Incorrect string value: '\xE3\x81\x94\xE6\xB3\xA8...' for column 'content' at row 1