输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多 个整数组成一个子数组。求所有子数组的和的最大值。 示例 1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
时间: 2024-03-09 09:47:24 浏览: 93
一个数组子数组的最大和
这是一道非常经典的动态规划问题,可以使用Kadane算法来解决。
Kadane算法的思路是维护两个变量:一个是全局最大值max_sum,一个是当前子数组的最大值cur_sum。遍历整个数组,对于每一个数字,更新cur_sum为它和之前的cur_sum加上当前数字的较大值,然后将max_sum更新为max_sum和cur_sum的较大值。
以下是对应的Python代码实现:
```python
def maxSubArray(nums):
max_sum = cur_sum = nums[0]
for i in range(1, len(nums)):
cur_sum = max(nums[i], cur_sum + nums[i])
max_sum = max(max_sum, cur_sum)
return max_sum
```
对于输入的示例数组 [-2,1,-3,4,-1,2,1,-5,4],运行该函数可以得到输出结果 6,即最大子数组和为6。
阅读全文