- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们都知道最大和子数组和著名的Kadane's algorithm。 .但是我们也可以使用相同的算法来找到最小和吗?
我的看法是:
change the sign and find the max sum in that, same as the way we calculate the maximum sum subarray. Than change the sign of the elements in the array to make it in initial state.
如果有任何问题,请帮助我纠正算法。
极端情况:我知道如果所有元素都是正数就会出现问题,我们可以通过做一些预处理来处理这种情况,即如果所有元素都为 +ve 则遍历数组,而不是只返回最小数从阵列。
上述算法将有效并得到 dasblinkenlight 的良好支持(解释) .
最佳答案
Will the approach that I have mentioned work to find the minimum sum?
是的,会的。您可以将寻找最小和的问题重新表述为寻找具有最大绝对值的负和。当您切换数字的符号并保持算法的其余部分不变时,这就是算法将返回给您的数字。
I know there is an issue if all the elements are positive
不,没有问题:当所有元素都为负时,请考虑原始的 Kadane 算法。在这种情况下,算法返回一个空序列,其总和为零 - 在这种情况下可能的最高值。换句话说,当所有元素都为负数时,最好的解决方案是不取任何元素。
您修改后的算法将在所有数字均为正数的情况下执行相同的操作:同样,您最好的解决方案是根本不接受数字。
如果您添加从算法返回的范围不能为空的要求,您可以稍微修改算法以找到最小的正数(或最大的负数),以防 Kadane 的算法返回空范围作为最优解。
关于java - Kadane 算法的 O(N) 中的最小总和子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472606/
我已经编写了 Kadane 算法,但不知何故它返回了错误的结果。不知道为什么。这是实现。基本上是在数组中找到“和最大的 ubarray” public class Kadane { publi
我将 Kadane 的算法修改为以下内容,这样即使在数组中包含所有负数的情况下它也能正常工作。 //Largest Sum Contiguous Subarray #include #include
尝试使用此处解释的 Kadane 算法:https://www.youtube.com/watch?v=OexQs_cYgAQ&t=721s 在这个数字数组中:[-5, 10, 2, -3, 5, 8
这个算法很有趣,我知道它被用于图像处理(可能还有其他场景),但我觉得奇怪的是这个算法也对负值进行操作,而负值在成像世界中几乎不存在其中有很多 unsigned int 来表示值。 您能否提供一个利用
假设 max_sequence(Array A):是 Kadane 算法的一个解。 你有一个数组:5,-3,-4,8,-1,12,-6,+4,+4,-14,+2,+8 然后将此数组缩短为正负序列的条纹
我正在研究 Kadane 的最大子数组问题算法。现在我从声明中了解到我们已经找到一个 子数组 的算法。子数组是否包含整个数组本身。 其实我在尝试下面的程序 int main(void)
算法说明:最大子数组问题给定一个由 n 个实数组成的序列 A(1) … A(n),确定一个连续的子序列 A(i) … A(j),其中子序列中的元素之和最大。 算法: int kadane(int a[
Initialize: max_so_far = 0 max_ending_here = 0 Loop for each element of the array (a) max
int array[] = {-1, 4, -2, 5, -5, 2, -20, 6}; 如果我有那个数组,我的 Kadane 算法实现可以找到最大子数组: int max_so_far = IN
有人可以告诉我 Kadane 算法中发生了什么吗?想检查我的理解。这就是我的看法。 你正在遍历数组,每次将 ans 变量设置为看到的最大值,直到该值变为负数,然后 ans 变为零。 与此同时,每次循环
这个问题在这里已经有了答案: Maximum sum sublist? (13 个答案) 关闭 8 年前。 我有以下 Kadane's algorithm 的实现求解数组的最大子数组问题: publ
我的算法如下所示: Initialize: max_so_far = 0 max_ending_here = 0 Loop for each element of the array
#include #include int MIN = std::numeric_limits::min() using namespace std ; void findMaxSubArray(
应用 Kadane 算法来获得最大乘积子数组似乎很棘手。虽然我能够获得最大乘积,但我并没有真正获得最大乘积子数组的正确范围。 http://www.geeksforgeeks.org/maximum-
我正在尝试解决 hackerrank 问题 - 最大子数组模 - 此处描述 https://www.hackerrank.com/challenges/maximum-subarray-sum/pro
这是 Kadane 算法的 Java 实现,用于查找具有最大和的连续子数组的和。 static int maxSum(int[] arr) { int maxEndingHer
我查找了寻找连续子数组最大和的最优解。还有一种算法叫做 Kadane 算法。这是我在 geeksforgeeks 上找到的伪代码。 Initialize: max_so_far = 0
我一直在尝试获取子数组的最大积的范围(为求职面试而学习)。 这已经在这里问过(但没有提供有效的答案)。 Getting range of max product subarray using Kada
public class Kadane { double maxSubarray(double[] a) { double max_so_far = 0; double max_e
我感觉Kadane的算法是最大子数组问题真动态规划解法的修改版。为什么我这么感觉?我感觉是因为计算最大子数组的方式可以采取: for(i=0;i using namespace std; int DP
我是一名优秀的程序员,十分优秀!