应用Kadane算法得到最大乘积子数组是一个棘手的问题。虽然我能够得到最大乘积,但我并没有真正得到最大乘积子数组的正确范围。
有人能帮我了解一下射程问题吗?这是一个标准的面试问题,我想确保我理解了乘积情况的逻辑,而不仅仅是说可以修改最大和子数组来回答最大乘积子数组的情况。
谢谢!!
您提供的链接似乎假设所有元素都是正的。然而,在我看来,这不是一个安全的假设。我有返回代码,以获得最大乘积的子数组。我已经使用了卡丹算法中使用的相同逻辑。代码似乎对我来说适用于各种输入。如果有问题请让我知道。
public static int[] getMaxSubArray(int []arr){
int maxEndingHere = arr[0], maxSoFar = arr[0], startIndex =0, start =0,end=0;
for(int i=1;i<arr.length;i++){
if(maxEndingHere<0){
maxEndingHere = arr[i];
startIndex = i;
}else{
maxEndingHere *= arr[i];
}
if(maxEndingHere>=maxSoFar){
maxSoFar = maxEndingHere;
start = startIndex;
end = i;
}
}
if(start<=end)
return Arrays.copyOfRange(arr, start, end+1);
return null;
}
{6,3,-10,0,2}
输出={6,3}
{-2,1,-3,4,-1,2,1,-5,4}
输出={4}
{-1,-2,-9,-6}
输出={-1}
我有两个矩阵m1和m2: 乘法的结果是: 现在,我想让R给出相应乘法过程的最大值,而不是矩阵m3中的和积,例如: 我想得出以下矩阵: 如何做到这一点?
给定N个数字,范围为-100.100。 要求重新排列元素以使产品价值之和最大。此任务中的乘积和定义为a1*a2+a2*a3..an-1*an 例如,给定数字10 20 50 40 30。 1,-2,3,-4,5,-6,7,-8,9,10,11,12,13,14,15,-16 预期的最大乘积为1342。 我的算法给出了下一个重排:
这个问题可能是封闭的,因为它听起来很模糊,但我真的问这个,因为我不知道或者我的数学背景不够。 我试图实现一个挑战,其中一部分挑战要求我计算矩阵的最小值和最大值。我对矩阵的实现及其操作没有任何问题,但是什么是矩阵的最小值和最大值?考虑到3x3矩阵是9个数中最小的数,最大的是最大的还是其他什么?
我检查了用Kadane算法求最大和的连续子数组的解,我不知道为什么我们在代码中需要全局最大值(下面的代码中是global_max)。 下面是用来查找具有最大和的连续子数组的python代码
给定一个数N,我们如何求最大P*Q null 因此,暴力解决方案起作用。 再进一步,我们看到Q_max<=n/2,如果我们确实同意P =√n。 我们可以将我们的解决方案集细化为仅有那些值{P,n\2},其中n\2>=√N。 这可能看起来微不足道,但它只是消除了可能的解决方案集的1/3。 我们是否可以添加其他聪明的程序来进一步减少设置?
本文向大家介绍LCM的最大长度子数组等于C ++中的乘积,包括了LCM的最大长度子数组等于C ++中的乘积的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数组A。我们必须找到子数组的最大长度,它的LCM与该子数组元素的乘积相同。如果找不到这种子数组,则返回-1。假设数组为{6,10,21},则长度为2,因为在那里有子数组{10,21},其LCM为210,乘积也为210。 该方法是直接的。我