力扣410.分割数组的最大值
-
分割数组 使得子数组最大值最小
- 凡是最小化最大值和最大化最小值的题都是二分答案
- 二分子数组最大值 求当前数组可以分为几段
-
class Solution { public: int splitArray(vector<int>& nums, int k) { auto check = [&](int mid) -> bool { int cnt = 1,s = 0; for(int x:nums) { if(s + x <= mid) s += x; else { if(cnt ++ == k) return false; s = x; } } return true; }; int l = ranges::max(nums) , r = accumulate(nums.begin(),nums.end(),0); while(l<r) { int mid = l + r >> 1; if(check(mid)) r = mid; else l = mid + 1; } return l; } };