leetcode 爱吃香蕉的珂珂 中等
二分答案即可。
class Solution { public: int minEatingSpeed(const vector<int>& piles, int h) { int l = 1, r = 0; for(int i = 0; i < piles.size(); ++ i) { r = max(piles[i], r); } int ans = -1; while(l <= r) { int mid = (l + r) >> 1; if(check(piles, h, mid)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } return ans; } private: bool check(const vector<int>& piles, const int &h, const int &mid) { int sum = 0; for(int i = 0; i < piles.size(); ++ i) { sum += (int) ceil(piles[i] * 1.0 / mid); } return sum <= h; } };