力扣410.分割数组的最大值

力扣410.分割数组的最大值

  • 分割数组 使得子数组最大值最小

    • 凡是最小化最大值和最大化最小值的题都是二分答案
    • 二分子数组最大值 求当前数组可以分为几段
cpp 复制代码
  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;
      }
  };
相关推荐
Cosmoshhhyyy12 小时前
《Effective Java》解读第40条:坚持使用Override注解
java·开发语言
ValhallaCoder12 小时前
hot100-二分查找
数据结构·python·算法·二分查找
0 0 012 小时前
【C++】矩阵翻转/n*n的矩阵旋转
c++·线性代数·算法·矩阵
m0_5312371712 小时前
C语言-指针,结构体
c语言·数据结构·算法
癫狂的兔子12 小时前
【Python】【机器学习】十大算法简介与应用
python·算法·机器学习
丰海洋13 小时前
leetcode-hot100-1.两数之和
数据结构·算法·leetcode
苦藤新鸡13 小时前
58 单词搜索
数据结构·算法
_F_y13 小时前
背包问题动态规划
算法·动态规划
Frostnova丶13 小时前
LeetCode 401. 二进制手表
算法·leetcode
Wect13 小时前
LeetCode 104. 二叉树的最大深度:解题思路+代码解析
前端·算法·typescript