输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多 个整数组成一个子数组。求所有子数组的和的最大值。
时间: 2024-03-09 07:45:39 浏览: 126
往数组中插入数据.md
这是一个经典的动态规划问题,可以使用Kadane算法来解决。
Kadane算法的思路是:对于数组中的每个元素,计算以该元素为结尾的最大子数组和,然后取所有最大子数组和的最大值作为答案。
具体实现如下:
```python
def maxSubArray(nums):
max_sum = nums[0] # 最大子数组和
cur_sum = nums[0] # 当前子数组和
for i in range(1, len(nums)):
# 如果当前子数组和为负数,则舍弃前面的子数组,从当前元素开始重新计算
cur_sum = max(cur_sum + nums[i], nums[i])
# 更新最大子数组和
max_sum = max(max_sum, cur_sum)
return max_sum
```
该算法的时间复杂度为O(n),空间复杂度为O(1),非常高效。
阅读全文