Menu
CoddyTech

Maximum Subarray

中等动态规划python iconjava iconcpp iconc iconjs icon+10

你会得到一个整数列表 nums。子数组是由连续相邻元素组成的一段序列,中间不能有间隔,而且至少要包含一个元素。请返回 nums 中任意子数组可能得到的最大和。你只需返回这个和,不需要返回子数组本身。

函数

maxSubArray(nums: integer-array) → integer
numsinteger-array
整数列表,且至少包含一个元素
返回值integer
一段非空相邻元素序列的最大和

约束条件

  • 1 ≤ nums.length ≤ 105
  • -104 ≤ nums[i] ≤ 104
  • 答案始终可以用 32 位有符号整数表示。

示例

输入
nums = [2, -4, 3, -1, 5, -6, 1]
输出
7
解释
序列 [3, -1, 5] 的总和是 7。向左延伸会加上 -4,然后加上 2,净损失为 2。向右延伸会加上 -6,然后加上 1,净损失为 5。没有其他序列能取得更好的结果。
challenge icon

进阶

你也能用分治法在 O(n log n) 时间内解决这个问题吗?把列表分成两半,并处理跨越中间位置的连续段。

重置代码
def maxSubArray(nums):
    # 在这里编写代码

测试 #1

测试 #2

参数

nums = [2, -4, 3, -1, 5, -6, 1]

预期输出

7