为了账号安全,请及时绑定邮箱和手机立即绑定

LeetCode 最大子序和

标签:
Python

最大子序和


题目


给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

解题思路


  1. 定义当前子序和以及最大子序和为数组的一个元素;
  2. 遍历整数数组,比较当前子序和的值及当前遍历的值,取较大值重置赋值给当前子序和 cur_sum
  3. 同时比较当前子序和及最大子序和的值,取较大值重置赋值给最大子序和 max_sum
  4. 遍历结束,返回最大子序和的值 max_sum

代码实现


class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        '''查找连续子数组的最大和

        Args:
            nums: 整数数组
        
        Returns:
            返回整数数组的最大子序和
        '''
        # 比较当前子序和,最大子序和,返回最大值
        # 定义当前子序和以及最大子序和为第一个元素
        cur_sum = max_sum = nums[0]
        # 遍历整数数组
        for x in range(1, len(nums)):
            # 比较当前值和当前子序和的值,取较大值
            cur_sum = max(nums[x], cur_sum + nums[x])
            # 比较当前值和定义的最大子序和值,将最大值重置赋值给 max_sum
            max_sum = max(cur_sum, max_sum)
        return max_sum
            

实现效果



以上是本篇的主要内容

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消