0053. Maximum Subarray
Easy | Array + DP | 40 ms (97.39%), 14.1 MB (71.67%)
Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Input: nums = [1]
Output: 1
Input: nums = [5,4,-1,7,8]
Output: 23class Solution:
def maxSubArray(self, nums: List[int]) -> int:
# (base case)
if len(nums) == 1: return nums[0]
# ==================================================
# Array + Dynamic Programming =
# ==================================================
# time : O(n)
# space : O(1)
curSum = maxSum = nums[0]
for i in range(1, len(nums)):
curSum = max(nums[i], curSum + nums[i])
maxSum = max(curSum, maxSum)
return maxSumclass Solution {
/**
* @time : O(n)
* @space : O(1)
*/
public int maxSubArray(int[] nums) {
/* base case */
if(nums.length == 1) return nums[0];
int curSum = nums[0], maxSum = nums[0];
for(int i=1 ; i<nums.length ; i++){
curSum = Math.max(nums[i], curSum + nums[i]);
maxSum = Math.max(curSum, maxSum);
}
return maxSum;
}
}Last updated