当前位置: 首页 > wzjs >正文

增城住房和建设局网站北京做网页的公司

增城住房和建设局网站,北京做网页的公司,营销策划公司加盟,wordpress台湾网店1 题目:分割数组的最大值 2025-04-07 官方标定难度:中 给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连续子数组,使得这 k 个子数组各自和的最大值 最小。 返回分割后最小的和的最大值。 子数组…

1 题目:分割数组的最大值

2025-04-07

官方标定难度:中

给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连续子数组,使得这 k 个子数组各自和的最大值 最小。

返回分割后最小的和的最大值。

子数组 是数组中连续的部份。

示例 1:

输入:nums = [7,2,5,10,8], k = 2
输出:18
解释:
一共有四种方法将 nums 分割为 2 个子数组。
其中最好的方式是将其分为 [7,2,5] 和 [10,8] 。
因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。

示例 2:

输入:nums = [1,2,3,4,5], k = 2
输出:9

示例 3:

输入:nums = [1,4,4], k = 3
输出:4

提示:

1 <= nums.length <= 1000
0 <= nums[i] <= 1 0 6 10^6 106
1 <= k <= min(50, nums.length)

2 solution

本题如果直接找到满足条件的最大值是很看难的,但是满足下面连个条件。
1 验证答案很简单很简单
2 答案是连续的 (如果 ans 可以,ans + 1 一定可以)
所以可以用我们的算法神奇——二分法。

最小可能的值为所有值中的最大值,最大可能是所有数的和。然后用二分法找到满足条件的最大值。

代码

class Solution {
public:
// 验证 n 是否为答案int ok(vector<int> &nums, int n, int k) {int s = 0, cnt = 1;for (int i = 0; i < nums.size(); i++) {if (s + nums[i] > n) {cnt++;if (cnt > k) return false;s = nums[i];} else {s += nums[i];}}return true;
}int splitArray(vector<int> &nums, int k) {int l = 0, r = 0;for(int i : nums){r += i;l = max(l, i);}while (l < r) {int mid = l + (r - l) / 2;if(ok(nums, mid, k)){r = mid;}else{l = mid + 1;}}return r;
}};

结果

在这里插入图片描述

http://www.dtcms.com/wzjs/105503.html

相关文章:

  • wordpress清新文艺主题游戏优化
  • 提供手机自适应网站建设维护网络推广网络营销和网站推广的区别
  • 做网站标题seo与网络推广的区别和联系
  • 宽屏网站设计自助建站网站哪个好
  • 如何做微信个人网站网站维护需要多长时间
  • 郑州平台类网站电工培训技术学校
  • 免费mac做ppt模板下载网站怎样建立网站平台
  • 专业网站建设哪家更好网络媒体推广报价
  • 网站建设方案总结语痘痘怎么去除效果好
  • 哪些网站做魔兽地图关键词推广优化
  • 搞网站开发的程序员属于哪一类百度关键词搜索热度查询
  • 公司网站模板中英文舆情网站入口
  • 企业网站流量seo网站优化培训多少价格
  • 规模以上工业企业奖励seo关键词优化最多可以添加几个词
  • 想自己做淘宝有什么网站好推建站
  • wordpress主题跟目录百度网站的优化方案
  • 阿里云php做网站推广方案怎么写模板
  • 无锡网站建设价格低哪个浏览器不屏蔽网站
  • 网站建设ppt下载seo内容优化方法
  • 网站开发与软件开发重庆森林经典台词图片
  • 日本中古手表网站青岛网站建设推广公司
  • 网页制作教程和素材seo标题优化步骤
  • 长春火车站到吉大二院常见的网站推广方式有哪些
  • 做推广可以上那些网站百度搜索网页版入口
  • 嘉兴网站建设制作互联网网络推广公司
  • 人人做免费网站网络公司
  • 网站怎么做中英文切换网络营销师证书查询
  • 网站如何做后台留言怎么免费推广自己网站
  • 网站进度条他妈到底怎么做sem是什么缩写
  • 武汉专业网站建设公司优化网站链接的方法