力扣LCP 30. 魔塔游戏(贪心+小顶堆)

力扣LCP 30. 魔塔游戏(贪心+小顶堆)

LCP 30. 魔塔游戏

力扣LCP 30. 魔塔游戏(贪心+小顶堆)_第1张图片

贪心

模拟过程,将之前扣减的血量都放入优先队列中,每次快死之前,就取出堆顶的元素(扣最多的血)给自己加上,这样的贪心思想能保证我们移动到尾部的元素是最少的

优先级队列priority_queue

这是一个拥有权值queue,其内部元素按照元素的权值排列。权值较高者排在最前优先出队。其中缺省情况下系统是通过一个max-heap以堆实现完成排序特性,表现为一个以vector表现的完全二叉树。

//升序队列  小顶堆 great 小到大
priority_queue ,greater > pq;
//降序队列  大顶堆 less  大到小 默认
priority_queue ,less > pq;

函数/方法

  • top() 访问队头
  • empty()
  • size()
  • push() / emplace
  • pop
  • swap
class Solution {
public:
    int magicTower(vector& nums) {
        priority_queue,greater>q;
        long long hp=1;
        long long neg=0;
        int count=0;
        for(int i=0;i

 

你可能感兴趣的:(力扣刷题,队列,数据结构,面试,queue,c++)