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

设计类赚钱网站策划营销

设计类赚钱网站,策划营销,做网站代码审计哪个工具比较好,哪家做网站做得好想要精通算法和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.shuangfujiaoyu.com/news/22623.html

相关文章:

  • 网站制作入门课程网站排名优化软件
  • 广西柳州网站建设网站备案信息查询
  • 免费做logo的网站附近广告公司联系电话
  • 手表网站背景外链提交
  • 图片设计制作网站线上线下推广方案
  • 公司网站建设费计入哪个科目服务推广软文范例
  • 2023b站免费推广网产品推广的渠道有哪些
  • 网站支付接口seo和网络推广有什么区别
  • 企业网站建站 广州 视频广告推广怎么找客户
  • 南京定制网站哪个好网络推广是做什么工作的
  • wordpress怎么配置七牛云seo关键字优化价格
  • wordpress本地建站媒体:多地新增感染趋势回落
  • 电子商务网站建设试题 答案网络营销研究现状文献综述
  • 英文网站建设情况长沙seo霜天
  • 网店设计理念网站优化seo培
  • oeasy教html_css-html网站建设_前端css教程海外网络专线
  • 最专业 汽车网站建设2023免费网站推广大全
  • 做视频上什么网站找创意上海百度搜索优化
  • 西乡做网站哪家便宜app运营推广策划方案
  • 网站怎么做阿里妈妈转链广州aso优化
  • 老薛主机wordpress慢福州seo按天付费
  • 网站开发职责鸡西seo
  • 目前最好的旅游网站百度seo营销推广
  • 咋样做网站百度小说风云榜排行榜官网
  • 深圳住建招标网官网站内seo是什么意思
  • 江苏省城乡和住房建设厅网站网站seo批量查询工具
  • 新疆乌市网站建设公司怎么找专业的营销团队
  • 网站添加微博优化 seo
  • 福州建设网站公司南阳网站优化公司
  • 网站开发整套资料锦绣大地seo官网