多语言展示
当前在线:418今日阅读:195今日分享:41

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

用PYTHON解决最大子序和问题
工具/原料

PYTHON

方法/步骤
1

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

2

nums = [-2,1,-3,4,-1,2,1,-5,4]定义一个列表,我们需要找到最大和。

3

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

4

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

5

def maxSubArray(nums):    sum = 0    max = nums[0]    for i in range(len(nums)):        return max我们需要用循环来遍历整个列表。

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开始进行叠加,然后进行对比看看哪个和才是最大值。

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,因为负数怎么叠加会使得整体变小。

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修改整理一下。

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 maxnums = [-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 maxnums = [-2, 1]maxSubArray(nums)但是这里出现了问题。

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 maxnums = [-2, 1]maxSubArray(nums)这里都修改为if即可。

注意事项

注意sum归零的作用

推荐信息