题目:最大子数组和
题目描述:
给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
- 输入:
nums = [-2,1,-3,4,-1,2,1,-5,4]
- 输出:
6
- 解释:连续子数组
[4,-1,2,1]
的和最大,为6
。
解题思路:
这个问题可以使用著名的 Kadane’s Algorithm(卡丹算法) 来解决。该算法通过一次遍历数组,在每个位置上记录当前子数组的最大和,并不断更新全局最大子数组的和。
步骤如下:
-
初始化两个变量:
current_sum
:表示到当前位置为止的最大子数组和,初始值为数组的第一个元素。max_sum
:记录全局最大子数组的和,初始值也为数组的第一个元素。
-
遍历数组,从第二个元素开始,对每个元素
nums[i]
执行以下操作:- 更新
current_sum
为max(nums[i], current_sum + nums[i])
- 更新