如何用PYTHON解决最大子序和问题

2025-11-05 08:33:39

1、打开JUPYTER NOTEBOOK,新建一个PY文档。

如何用PYTHON解决最大子序和问题

2、nums = [-2,1,-3,4,-1,2,1,-5,4]

定义一个列表,我们需要找到最大和。

如何用PYTHON解决最大子序和问题

3、sum = 0

设置一个sum,记录连续相加的和。

如何用PYTHON解决最大子序和问题

4、max = nums[0]

#设置一个max,记录最大的和,可以先定义第一个数是最大的数。

如何用PYTHON解决最大子序和问题

5、def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        return max

我们需要用循环来遍历整个列表。

如何用PYTHON解决最大子序和问题

6、def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        sum = sum + nums[i]

        max = max(max, sum)

    return max

开始进行叠加,然后进行对比看看哪个和才是最大值。

如何用PYTHON解决最大子序和问题

7、def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        sum = sum + nums[i]

        max = max(max, sum)

        if sum < 0:

            sum = 0

    return max

如果叠加为负数的话就重启sum,因为负数怎么叠加会使得整体变小。

如何用PYTHON解决最大子序和问题

8、def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        sum += nums[i]

        if max <= sum:

            max = sum

        elif sum < 0:

            sum = 0

    return max

修改整理一下。

如何用PYTHON解决最大子序和问题

9、def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        sum += nums[i]

        if max <= sum:

            max = sum

        elif sum < 0:

            sum = 0

    return max

nums = [-2,1,-3,4,-1,2,1,-5,4]

maxSubArray(nums)

我们进行一下测试。

def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        sum += nums[i]

        if max <= sum:

            max = sum

        elif sum < 0:

            sum = 0

    return max

nums = [-2, 1]

maxSubArray(nums)

但是这里出现了问题。

如何用PYTHON解决最大子序和问题

如何用PYTHON解决最大子序和问题

10、def maxSubArray(nums):

    sum = 0

    max = nums[0]

    for i in range(len(nums)):

        sum += nums[i]

        if max <= sum:

            max = sum

        if sum < 0:

            sum = 0

    return max

nums = [-2, 1]

maxSubArray(nums)

这里都修改为if即可。

如何用PYTHON解决最大子序和问题

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢