力扣LCP 30.魔塔游戏
-
反悔堆
-
class Solution { public: int magicTower(vector<int>& nums) { if (accumulate(nums.begin(), nums.end(), 0LL) < 0) return -1; int res=0; long long hp = 1; priority_queue<int> h; for(int x : nums) { if(x < 0) //放正的进去 h.push(-x); hp += x; if(hp < 1) { //说明当前x一定为负数 所以队列一定非空 hp += h.top(); //反悔 h.pop(); res++; } } return res; } };