【问题标题】:How to find the Maximum sum of subarray having sum less than or equal to given sum AND the subarray elements iteslf?如何找到总和小于或等于给定总和和子数组元素iteslf的子数组的最大和?
【发布时间】:2022-10-12 22:24:41
【问题描述】:

我已阅读以下页面: https://www.geeksforgeeks.org/maximum-sum-subarray-sum-less-equal-given-sum/

我要做的是找出最大子数组的确切元素,而不仅仅是这个子数组的总和。

有人有解决方案吗?

谢谢。

【问题讨论】:

  • 是的,保存第一个元素的索引,然后重新计算总和。
  • 欢迎来到 Stackoverflow!你能发布一个可重现的示例代码吗?连同预期的输出?

标签: python


【解决方案1】:

修改原始代码最小量,你得到:

def findMaxSubarraySum(arr, n, sum):
    curr_sum = arr[0]
    max_sum = 0
    max_sum_array = [arr[0]]
    curr_sum_array = [arr[0]]
    start = 0;
    for i in range(1, n):
        if (curr_sum <= sum and curr_sum > max_sum):
            max_sum_array = curr_sum_array.copy()
            max_sum = curr_sum
        while (curr_sum + arr[i] > sum and start < i):
            curr_sum -= arr[start]
            curr_sum_array = curr_sum_array[1:]
            start += 1
        curr_sum_array.append(arr[i])
        curr_sum += arr[i]
    if (curr_sum <= sum and curr_sum > max_sum):
        max_sum_array = curr_sum_array.copy()
        max_sum = curr_sum
    return max_sum_array

if __name__ == '__main__':
    arr = [2, 4, 6, 8, 10]
    n = len(arr)
    sum = 7
    print(findMaxSubarraySum(arr, n, sum))

如果我可以添加个人建议,我认为您在没有尝试自己找到答案的情况下提出这个问题是错误的,您不会以这种方式学习,并且会后悔。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多