当前位置: 首页 > 知识库问答 >
问题:

如何求[L,R]之间大小最大和子数组

方德宇
2023-03-14

给定一个正负整数数组,如何找到长度在LR之间的最大和子数组(连续子数组)?

例如:如果数组是

-1 3 -2 5 3 -5 2 2

我的方法:

我不太确定如何处理这个问题。我想也许是滑动窗口+Kadane的组合。我听说前缀和+滑动窗口可能是一个可能的解决方案,但我不确定如何实现它。

共有1个答案

卫博雅
2023-03-14

如果我正确理解你的问题,有一个n*logn解决方案,它确实使用前缀和和滑动窗口。这里解释一下:https://www.geeksforgeeks.org/maximal-sum-subarray-of-size-range-L-r/

 类似资料:
  • 子数组包含正数和负数。你必须找到一个最大和子数组,使子数组的长度大于或等于k。 下面是我用C++编写的使用Kadane算法的代码。 我的代码工作得很好,但很慢,我想不出任何方法来改进我的代码。我也读过这个问题,找到最长的子数组,它的和可以被K整除,但这不是我想要的,长度也可以大于K。

  • 我有这个问题来自hackerearth 给定一个N个整数的数组,C个卡和S个和。每一张卡片都可以用来将给定数组中的一个整数递增或递减1。查找给定数组中是否有任何子集(在使用任意数量的卡之后/之前)具有和S。 输入格式 输出格式 如果存在具有给定和的子集,则打印TRUE,否则打印false。 所以这基本上是子集和问题的一种变体,但我们不是要找出一个给定的具有和的子集是否存在,而是要找到从序列到中最大

  • 我想从数组的一部分找到最大值和最小值。我知道我可以通过复制数组将所需的数组部分复制到另一个数组中,但只是想知道是否可以不复制数组,因为我必须为不同的子数组进行循环 例如: 现在我想从1到4找到子数组的最小/最大值(如果可能,不复制子数组)

  • 问题内容: 我想返回该数字,只要它在限制范围内,否则返回限制的最大值或最小值。我可以结合使用和和。 我想知道,如果有一个现有的或我俯瞰功能。 如果第三方库很常见(例如Commons或Guava),则欢迎它们 问题答案: 从版本21开始,Guava包括(以及其他原语的等效方法)。从发行说明中: 添加了将给定值限制在和值定义的封闭范围内的方法。如果值在范围内,则返回值本身,如果值在范围内,则返回值,如

  • 我试图在一个数组中找到具有最大和的邻接子数组。所以,对于数组 {5,15,-30,10,-5,40,10}

  • 这是一个非常基本的算法(不能再简单了),但我被难住了。我们有一个元素数组,我们必须确定最小值和最大值。 通常的方法是遍历数组,找出最小值和最大值,即2n比较。 稍微有效的方法是首先对数组的连续元素进行比较,以确定任意两个元素的最大值和最小值(N/2比较)。我们现在有n/2 min和n/2 max元素。现在我们可以在n/2+n/2+n/2(前一步)=3/2*n或1.5n中得到最终的max和min 那