力扣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;
      }
  };
相关推荐
余瑜鱼鱼鱼5 分钟前
线程和进程的区别和联系
java·开发语言·jvm
小唐同学爱学习6 分钟前
如何解决海量数据存储
java·数据库·spring boot·mysql
962464i14 分钟前
SBE(simple-binary-encoding)-Demo
java
清酒难咽15 分钟前
算法案例之分治法
c++·经验分享·算法
-凌凌漆-15 分钟前
【Java】java中throws与try catch区别
java
wen__xvn17 分钟前
代码随想录算法训练营DAY25第七章 回溯算法 part04
算法·leetcode·深度优先
代码的奴隶(艾伦·耶格尔)18 分钟前
Nginx
java·服务器·nginx
亲爱的非洲野猪20 分钟前
动态规划进阶:序列DP深度解析
算法·动态规划
zzcufo24 分钟前
多邻国第五阶段第13部分
java·开发语言·数据库
不染尘.33 分钟前
双指针算法
算法