LeetCode 最大子序和

最大子序和


題目來源:https://leetcode-cn.com/problems/maximum-subarraypython

題目


給定一個整數數組 nums ,找到一個具備最大和的連續子數組(子數組最少包含一個元素),返回其最大和。segmentfault

示例:數組

輸入: [-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

實現效果



以上是本篇的主要內容

歡迎關注微信公衆號《書所集錄》
相關文章
相關標籤/搜索