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

设计类投稿网站谷歌搜索引擎 google

设计类投稿网站,谷歌搜索引擎 google,上海工程项目查询,网站建设结束语想要精通算法和SQL的成长之路 - 分割数组的最大值 前言一. 分割数组的最大值1.1 二分法 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 分割数组的最大值 原题链接 首先面对这个题目,我们可以捕获几个关键词: 非负整数。非空连续子数组。 那么我…

想要精通算法和SQL的成长之路 - 分割数组的最大值

  • 前言
  • 一. 分割数组的最大值
    • 1.1 二分法

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 分割数组的最大值

原题链接
在这里插入图片描述
首先面对这个题目,我们可以捕获几个关键词:

  • 非负整数。
  • 非空连续子数组。

那么我们假设分割后的子数组,和的最大值是M,对应分割的子数组个数为N。他们之间必然存在以下关系:

  • 分割的子数组个数 N 越多,对应的和最大值 M 也就越小。
  • 分割的子数组个数 N 越少,对应的和最大值 M 也就越大。

那么我们以每组和的最大值作为切入点,案例如下:

  • 设置 数组各自和的最大值 为 20,此时分割依然是 [7, 2, 5, | 10, 8],此时分割的数组数为2。
  • 设置 数组各自和的最大值 为 19,此时分割依然是 [7, 2, 5, | 10, 8],此时分割的数组数为2。
  • 设置 数组各自和的最大值 为 18,此时分割依然是 [7, 2, 5, | 10, 8],此时分割的数组数为2。
  • 设置 数组各自和的最大值 为 17,此时分割就变成了 [7, 2, 5, | 10, | 8],此时分割的数组数为3。

而我们题目要求分割组数是2,那么满足这个条件的几种情况,我们再取最大和最小的情况,最终得到结果是18。

1.1 二分法

二分的目标对象是什么?我们可以二分:数组各自和的最大值。那么二分法,就应该有初始区间:

  • left:可以是当前数组的最大元素值。(单个元素一组)
  • right:可以是当前数组的总和。(所有元素成一组)

那么我们二分后取得 mid

int mid = left + (right - left) / 2;

接下来我们就要对数组进行分组计算了,对数组从左往右按顺序分组,使得分组后的各个子数组和不能超过mid。我们可以编写个helper函数:

public int helper(int[] nums, int maxGroupSum) {// 分组数最小是1int res = 1;int curSum = 0;for (int num : nums) {// 如果加入当前元素会导致和超过限制,那么就另外再分一组if (curSum + num > maxGroupSum) {res++;curSum = 0;}curSum += num;}return res;
}

我们计算好分组后的个数groupNum之后,就需要和题目传入的k进行对比:

  • groupNum > k : 说明数组各自和的最大值还是小了,我们应该调大数组各自和的最大值。即left = mid +1
  • 反之:right = mid;

最终代码如下:

public int splitArray(int[] nums, int k) {int max = 0, sum = 0;for (int num : nums) {max = Math.max(max, num);sum += num;}int left = max, right = sum;while (left < right) {int mid = left + (right - left) / 2;// 如果分组数比 k 还要大,说明每个分组的和最大值还是小了int groupNum = helper(nums, mid);if (groupNum > k) {left = mid + 1;} else {right = mid;}}return left;
}public int helper(int[] nums, int maxGroupSum) {// 分组数最小是1int res = 1;int curSum = 0;for (int num : nums) {// 如果加入当前元素会导致和超过限制,那么就另外再分一组if (curSum + num > maxGroupSum) {res++;curSum = 0;}curSum += num;}return res;
}
http://www.tj-hxxt.cn/news/54166.html

相关文章:

  • 郑州 网站建设公司网站分为哪几种类型
  • 网站屏幕自适应百度关键词排名突然消失了
  • 个人网站开发的背景阿里指数查询官网入口
  • 政府网站建设 汇报百度推广优化排名
  • 网站建设应遵守的原则东莞网站提升排名
  • 网站开发 成都网站点击快速排名
  • 那个网站攻略做的好五年级上册优化设计答案
  • 做网站怎么做起来的什么叫做网络营销
  • 河南工程建设信息网一体化平台seo收费标准多少
  • 最权威的做网站设计哪家好网址导航
  • wordpress中国网站模板人民日报官网
  • 导入表格数据做地图网站今日头条权重查询
  • 影视源码seo是什么意思如何实现
  • 怎样建设网站后台渠道销售怎么找客户
  • 做php网站用mvc多吗做网站需要什么技术
  • asp网站开发模板成品网站源码在线看
  • 龙岩网站建设方案书网站推广业务
  • 普陀企业网站建设长春网长春关键词排名站设计
  • 怎样在阿里做网站seo营销外包公司
  • 网站维护的内容主要包括信息流优化师职业规划
  • 无锡网站策划公司关键词查找网站
  • 简单的电商网站百度一下手机版首页
  • 苏州高端网站建设kgwl新手如何做网上销售
  • 网站接入百度地图引擎seo如何优化
  • 商丘市网站建设公司理发培训专业学校
  • 图片网站虚拟主机网站外链有多重要
  • 旅游网站建设策划方案书大数据营销推广精准粉
  • 做视频参考什么网站常见的营销策略有哪些
  • 浙江建设职业技术学院招生网站seo关键词优化排名外包
  • 建设企业网站的作用怎样创建一个自己的网站