53. Maximum Subarray

Question

LeetCode Problem

Given an integer array nums , find the subarray with the largest sum, and return its sum .
Example 1:

Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: The subarray [4,-1,2,1] has the largest sum 6.

Example 2:

Input: nums = [1] Output: 1 Explanation: The subarray [1] has the largest sum 1.

Example 3:

Input: nums = [5,4,-1,7,8] Output: 23 Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.

Constraints:


Solutions

Use DP

int maxSubarray(vector<int>& nums) {
	int m = nums.size();
	vector<int> dp(m, 0);
	int maxSum = nums[0];
	dp[0] = nums[0];
	for (int i = 1; i < m; ++i) {
		dp[i] = max(dp[i-1] + nums[i], nums[i]);
		maxSum = max(maxSum, dp[i]);
	}
	return maxSum;
}