题目
经典入门动态规划!!!
Python
版本1
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
dp = [0] * len(nums) # dp[i]表示以nums[i]结尾的最大子数组和
dp[0] = nums[0]
for i in range(1, len(nums)):
dp[i] = max(nums[i], nums[i] + dp[i-1])
return max(dp)
Java
class Solution {
public int maxSubArray(int[] nums) {
int[] dp = new int[nums.length];
dp[0] = nums[0];
int res = dp[0];
for (int i = 1; i < nums.length; ++i) {
dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
res = res > dp[i] ? res : dp[i];
}
return res;
}
}