例如,我们有
{2,2,-1},
when k = 0, return -1.
when k = 3, return 3.
这甚至很棘手,因为我们有负数和一个额外的变量 k。k可以是任何值,负数,不要做任何假设。
我无法参考https://en.wikipedia.org/wiki/Maximum_subarray_problem和https://www.youtube.com/watch?v=yCQN096CwWM来解决这个问题。
有谁能够帮我?最好使用 Java 或 JavaScript。
这是最大值(无变量 k)的经典算法 o(n):
public int maxSubArray(int[] nums) {
int max = nums[0];
int tsum = nums[0];
for(int i=1;i<nums.length;i++){
tsum = Math.max(tsum+nums[i],nums[i]);
max = Math.max(max,tsum);
}
return max;
}