剑指offer面试题----连续子数组的最大和

题目:输入一个整型数组,数组里有整数也有负数。
数组中一二或连续的多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)

思路:动态规划,分别计算第i时刻(0<=i<=n)之前子数组的最大和,如果第i-1时刻的值为负值,则将其丢弃,则当前最大和为当前数组位置的值,若不为负数,则将其加上当前位置的值。

class Solution:
    def FindGreatestSumOfSubArray(self, array):
        # write code here
        alist = [0]*len(array)
        
        for i in range(len(array)):
            if i==0 or alist[i-1]<0:
                alist[i] = array[i]
            else:
                alist[i] = alist[i-1] + array[i]
        return max(alist)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容