力扣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;
      }
  };
相关推荐
ch.ju16 小时前
Java Programming Chapter 4——Construction method
java·开发语言
小龙报16 小时前
【优选算法】双指针专项:1.移动零 2. 复写零 3.快乐数
java·c语言·数据结构·c++·python·算法·面试
AI行业学习16 小时前
CC-Switch Windows + macOS 下载安装配置全流程
java·开发语言·人工智能·python
Niliuershangba16 小时前
ChestnutCMS 栗子内容管理系统:从入门到模板开发实战
java·git·开源·gitlab·github·开源软件·gitcode
2601_9577867716 小时前
多平台矩阵运营的底层逻辑:当账号管理、内容生产与线索转化被一条链路串起来
java·数据库·矩阵·多平台管理
代码中介商16 小时前
排序算法完全指南(六):希尔排序深度详解
java·算法·排序算法
Lumbrologist17 小时前
【C++】零基础入门 · 第 3 节:条件判断(if、switch)
开发语言·c++·算法
布吉岛的石头17 小时前
Java 程序员第 22 阶段:Function Call 工具调用实战,Java 封装大模型外部能力
java·人工智能·python
codealy17 小时前
Rust 核心理论: 高并发与异步(四)
算法·rust
阿维的博客日记17 小时前
线程任务执行报错后,线程会不会挂掉,Java线程池
java·线程池