描述:
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
每个子数组的数字在数组中的位置应该是连续的。
在线测评地址
样例 1:
输入:
nums = [−2,2,−3,4,−1,2,1,−5,3]
输出:
6
解释:
符合要求的子数组为[4,−1,2,1],其最大和为 6。
样例 2:
输入:
nums = [1,2,3,4]
输出:
10
解释:
符合要求的子数组为[1,2,3,4],其最大和为 10。
挑战
要求时间复杂度为O(n)
源代码:
使用前缀和的方法,计算每个位置为结尾的 subarray 的最大值是多少。
class Solution:
"""
@param nums: A list of integers
@return: A integer indicate the sum of max subarray
"""
def maxSubArray(self, nums):
#prefix_sum记录前i个数的和,max_Sum记录全局最大值,min_Sum记录前i个数中0-k的最小值
min_sum, max_sum = 0, -sys.maxsize
prefix_sum = 0
for num in nums:
prefix_sum += num
max_sum = max(max_sum, prefix_sum - min_sum)
min_sum = min(min_sum, prefix_sum)
return max_sum

本文介绍如何使用前缀和方法解决给定整数数组中最大子数组和问题,通过示例和代码展示如何在时间复杂度为O(n)的情况下找到具有最大和的连续子数组。适合理解动态规划在数组问题中的应用。
1173

被折叠的 条评论
为什么被折叠?



