题解 | #连续子数组的最大和(二)#

连续子数组的最大和(二)

http://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param array int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def FindGreatestSumOfSubArray(self , array: List[int]) -> List[int]:
        if len(array) == 1:
            return array
        leftlist = [0]
        dplist = [array[0]]
        left = 0
        for ind, val in enumerate(array):
            if ind == 0:
                continue
            if dplist[-1] < 0:
                dplist.append(val)
                left = ind
            elif dplist[-1] >= 0:
                dplist.append(val + dplist[-1])
            leftlist.append(left)

        maxlen = dplist[0]
        for i in range(1, len(dplist)):
            if dplist[i] >= maxlen:
                maxlen = dplist[i]
                resr = i
        resl = leftlist[resr]
        return array[resl:resr + 1]
全部评论

相关推荐

华为 OD 13 级中位数在 9k-13k,14 级中位数在 13k-17k,15 级中位数在 17k-21k,16 级中位数在 21k-25k,17 级中位数在 25k-29k
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务