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

关于Kadane求最大和连续子阵算法的问题

邹齐智
2023-03-14

我检查了用Kadane算法求最大和的连续子数组的解,我不知道为什么我们在代码中需要全局最大值(下面的代码中是global_max)。

下面是用来查找具有最大和的连续子数组的python代码

def find_array(nums):
    current_max = nums[0]
    #I think it should be fine if remove global_max
    global_max = nums[0]
    for i in range(1,len(nums)):

        current_max = max(nums[i],current_max+nums[i])
        if current_max > global_max:
            global_max = current_max
    return global_max

共有1个答案

杨阳飇
2023-03-14

考虑case1-10

本地最大值为-9。全局将为1

 类似资料:
  • 我的看法是: 改变符号并在其中找到最大和,与我们计算最大和子数组的方法相同。改变数组中元素的符号使其处于初始状态。 如果algo有任何问题,请帮助我更正。 拐角情况:我知道如果所有元素都是正的就会有问题,我们可以通过做一些预处理来处理这种情况,即如果所有元素都是+Ve,就遍历数组,而不仅仅是从数组返回最小值。 上面提到的算法将工作,并得到DasBlinkenlight的良好支持(解释)。

  • 我在Leetcode上遇到了这个问题,我看到了解决方案,但我无法理解它为什么工作。它适用于模数的什么性质?我们怎么能说我们已经找到了一个和等于k的子数组,只看前面的模结果呢? 问题:

  • 应用Kadane算法得到最大乘积子数组是一个棘手的问题。虽然我能够得到最大乘积,但我并没有真正得到最大乘积子数组的正确范围。 有人能帮我了解一下射程问题吗?这是一个标准的面试问题,我想确保我理解了乘积情况的逻辑,而不仅仅是说可以修改最大和子数组来回答最大乘积子数组的情况。 谢谢!!

  • NowCoder 题目描述 {6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。 解题思路 // java public int FindGreatestSumOfSubArray(int[] nums) { if (nums == null || nums.length == 0) return 0;

  • 现在我用不同的测试场景测试它,总是比Kadena的结果更好。我不相信这样的运气,但找不到我错过了什么。你能看看这是否是一个有效的解决方案吗? 更新代码的思想是只跟踪一个子数组,并添加到其尾数,当数字很低时,和成为尾数组后的负集开始。另外,一开始的负面项目被忽略了。子数组的头只是向前移动。每次sum看起来是maximal-maxsum并且限制被更新。

  • A是一个数组,B是A中所有元素的质因数阶,< code>size(A)=N (1 到目前为止,我还没有想过这个问题,所以没有什么成就,但是我保证我已经想了很久了,希望有帮助,谢谢!