leetcode——动态规划(53)最大子序和
题目:
算法:
class Solution {
public int maxSubArray(int[] nums) {
int n = nums.length;
int tem = 0;
int max = nums[0];
for(int i = 0; i < n; i++){
tem = Math.max(nums[i], tem + nums[i]);
max = Math.max(tem, max);
System.out.println(max);
}
return max;
}
}
思想:
动态规划
f
(
i
)
=
max
{
n
u
m
s
[
i
]
,
f
(
i
−
1
)
+
n
u
m
s
[
i
]
}
f(i)=\max\{nums[i],f(i-1)+nums[i]\}
f(i)=max{nums[i],f(i−1)+nums[i]}其实就是判断前面连续子数组的和是否大于零即可。