手记

LeetCode 最大子序和

最大子序和


题目


给定一个整数数组 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人推荐
随时随地看视频
慕课网APP