1642. 可以到达的最远建筑
1642. Furthest Building You Can Reach
class Solution {
public:
int furthestBuilding(vector<int>& heights, int bricks, int ladders) {
priority_queue<int, vector<int>, greater<int> > PQ; // 小顶堆,用来保存前ladders个最大值
int sum = 0; // 除了前ladders个最大值之外的和
int cnt = 0; //最远可以到达的下标
for(int ii = 1; ii < heights.size(); ii++) {
int height = max(0, heights[ii] - heights[ii - 1]); // 高度差,取非负数
PQ.push(height);
if(PQ.size() > ladders) {
sum += PQ.top();
PQ.pop();
if(sum > bricks) break;
}
cnt = ii;
}
return cnt;
}
};