本文主要是介绍力扣1642.可以到达的最远建筑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
力扣1642.可以到达的最远建筑
-
二分答案
-
class Solution {public:int furthestBuilding(vector<int>& heights, int bricks, int ladders) {auto check = [&](int mid) -> bool{vector<int> h;for(int i=1;i<=mid;i++){int t = heights[i] - heights[i-1];if(t<=0) continue;else h.emplace_back(t);} ranges::sort(h);int t = bricks;for(int i=0;i<h.size();i++){if(t >= h[i]) t -= h[i];else return (h.size() - i) <= ladders;}return true;};int l = 0,r = heights.size() - 1;while(l<r){int mid = l + r + 1>> 1;if(check(mid)) l = mid;else r = mid - 1;}return l;}};
这篇关于力扣1642.可以到达的最远建筑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!