力扣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;
      }
  };
相关推荐
喵呜嘻嘻嘻13 分钟前
Gurobi求解器参数
java·数据结构·算法
消失的旧时光-194336 分钟前
第二十四课:从 Java 后端到系统架构——后端能力体系的最终总结
java·开发语言·系统架构
产品经理邹继强1 小时前
VTC财务与投资篇②:预算革命——如何用三维算法决定每一分钱去哪
算法
卓怡学长1 小时前
m225在线房屋租赁和电子签约系统的设计与实现
java·数据库·spring·tomcat·maven·intellij-idea
Polaris北1 小时前
第二十四天打卡
算法
Sylvia33.1 小时前
火星数据:棒球数据API
java·前端·人工智能
Anastasiozzzz1 小时前
G1垃圾回收流程详解
java·开发语言·算法
滴滴答滴答答2 小时前
LeetCode Hot100 之 17 有效的括号
算法·leetcode·职场和发展
掘根2 小时前
【C++STL】二叉搜索树(BST)
数据结构·c++·算法
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #20:有效的括号(数组模拟法、递归消除法等五种实现方案详细解析)
算法·leetcode··括号匹配·数组模拟法·递归消除法