40得票15回答
最大子数组和取模M

大多数人都熟悉最大子数组问题。我遇到了这个问题的一个变体,要求程序员输出所有子数组和模某个数字M的最大值。 解决这个变体的朴素方法是找到所有可能的子数组和(其数量级将是N^2,其中N是数组的大小)。当然,这并不够好。问题是 - 我们该如何做得更好? 例如:让我们考虑以下数组: 6 6 1...

25得票2回答
Kadane算法中的动态规划方面

Initialize: max_so_far = 0 max_ending_here = 0 Loop for each element of the array (a) max_ending_here = max_ending_here + a[i] (b) i...

24得票18回答
卡登算法负数处理

int array[] = {-1, 4, -2, 5, -5, 2, -20, 6}; 如果我有那个数组,我的Kadane算法实现来寻找最大子数组可以工作: int max_so_far = INT_MIN; int max_ending_here = 0; for (int i ...

19得票6回答
卡登算法解释

有人能帮我理解Kadane算法中发生了什么吗?我想检查一下我是否理解正确。这是我对它的看法。 您正在遍历数组,每次将ans变量设置为最大值,直到该值变为负数,然后ans变为零。 同时,每次通过循环都会覆盖sum变量,使其成为先前已看到的总和或迄今为止最大的“ans”。一旦执行循环完成,您将...

14得票11回答
寻找子数组的最小绝对和

给定一个包含正数和负数的整数数组 A,找到一个元素绝对值之和最小的(连续)子数组,例如: A = [2, -4, 6, -3, 9] |(−4) + 6 + (−3)| = 1 <- minimal absolute sum 我先实现了一个蛮力算法,时间复杂度为O(N^2)或O(N...

13得票7回答
不大于k的连续子数组中最大的和

例如,我们有{2,2,-1}, when k = 0, return -1. when k = 3, return 3. 由于我们有负数和一个额外的变量k,这个问题甚至更加棘手。k可以是任何值,包括负数,不要做任何假设。 我不能参考https://en.wikipedia.org/wiki...

11得票3回答
Kadane算法在Scala中的应用

有没有人用函数式风格实现过Kadane算法的Scala实现? 编辑说明:链接中的定义已经发生了更改,使得对此问题的回答无效--这表明问题(和答案)应该是自包含的,而不是依赖于外部链接。以下是原始定义: 在计算机科学中,最大子数组问题是找到一个一维数字数组中连续子数组的任务(其中至少包含一个正...

9得票4回答
Java中的Kadane算法

我有以下Java实现的Kadane算法。它基本上是用于查找连续子数组的最大和。 String[] numbers = string.split(","); int max_so_far = 0; int max_ending_h...

8得票6回答
Kadane算法:寻找具有最大和的子数组

我有以下实现Kadane算法来解决数组最大子序列问题: public static decimal FindBestSubsequence (this IEnumerable<decimal> source, out int startIndex, out int end...

8得票9回答
如何在Kadane算法中返回最大子数组?

public class Kadane { double maxSubarray(double[] a) { double max_so_far = 0; double max_ending_here = 0; for(int i = 0; i < a.le...