《剑指Offer》刷题笔记——面试题42. 最大子序和

难度:简单

一、题目描述:

在这里插入图片描述

二、解题分析:

1、剑指解析

I、贪心算法

在这里插入图片描述
在这里插入图片描述

II、动态规划

在这里插入图片描述

2、代码实现

I、贪心算法

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        n = len(nums)
        curr_sum = max_sum = nums[0]

        for i in range(1, n):
            curr_sum = max(nums[i], curr_sum + nums[i])
            max_sum = max(max_sum, curr_sum)
            
        return max_sum

II、动态规划

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        """动态规划"""
        n = len(nums)
        max_sum = nums[0]
        for i in range(1, n):
            if nums[i-1] > 0:
                nums[i] += nums[i-1]
            max_sum = max(nums[i], max_sum) #在知道当前位置的最大和后更新全局最大和
        return max_sum
发布了133 篇原创文章 · 获赞 154 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34108714/article/details/104701983