用贪心的思路来解决,从第一个元素开始,每次选择最大的,线性时间内完成
时间复杂度:O(N);
空间复杂度:O(1);
核心代码:
for (int i = 1; i < nums.length; i++) {
curSum = Math.max(curSum + nums[i], nums[i]);
maxSum = Math.max(curSum,maxSum);
}
没错,就三行
nums[i]:当前元素
curSum:当前元素位置的最大和
maxSum:迄今为止的最大和
总代码:
public class Main{
public static void main(String[] args) {
int[] nums = {
-2,1,-3,4,-1,2,1,-5,4};
System.out.println(f(nums));
}
public static int