Problem: 1642. 可以到达的最远建筑-Furthest Building You Can Reach优先队列堆最大堆最大值在堆顶每次拿到差值height[i-1]-height[i]若差值divid 0则放入堆中堆中保留差值最小的数字负数的绝对值越大该负数越小最小的几个负数用梯子最大的那些负数用砖块若堆的尺寸 ladders表示需要pop掉更大的负数(绝对值小)此时用砖块填充 bricks pq.top()若剩下的砖块 0则不可以继续了直接返回i-1最后返回n-1Codeclass Solution { public: int furthestBuilding(vectorint heights, int bricks, int ladders) { int n heights.size(), divde, pre heights[0], now; priority_queueint, vectorint, decltype(lessint()) pq; for(int i 1; i n; i) { now heights[i]; divde pre - now; if(divde 0) { pq.push(divde); if(pq.size() ladders) { bricks pq.top(); pq.pop(); if(bricks 0) { return i - 1; } } } pre now; } return n-1; } };