Maximum Subarray
Given an array of integers nums, find the subarray with the largest sum and return the sum.
A subarray is a contiguous non-empty sequence of elements within an array.
Example 1:
Input: nums = [2,-3,4,-2,2,1,-1,4]
Output: 8
Explanation: The subarray [4,-2,2,1,-1,4] has the largest sum 8.
Example 2:
Input: nums = [-1]
Output: -1
Constraints:
1 <= nums.length <= 1000
-1000 <= nums[i] <= 1000
Solution
To compute the sum of a subarray, a commonly used method is to compute the difference between two prefix sum. For a given prefix, to get the maximum subarray, we need to find a minimum prefix before it. While we can maintain the minimum prefix sum in traverse, this problem can be done in O(n)O(n)O(n) time complexity.
Code
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
minprefix = 0
prefix = 0
ans = nums[0]
for num in nums:
prefix += num
ans = max(ans, prefix-minprefix)
minprefix = min(prefix, minprefix)
return ans
1173

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



