def max_subarray(nums):
cur=best=nums[0]
for n in nums[1:]:
cur=max(n,cur+n)
best=max(best,cur)
return best
public int maxSubArray(int[] nums){
int cur=nums[0],best=nums[0];
for(int i=1;i<nums.length;i++){
cur=Math.max(nums[i],cur+nums[i]);
best=Math.max(best,cur);
} return best;
}
Kadane's. max() vs Math.max().
def max_subarray(nums):
cur=best=nums[0]
for n in nums[1:]:
cur=max(n,cur+n)
best=max(best,cur)
return best
public int maxSubArray(int[] nums){
int cur=nums[0],best=nums[0];
for(int i=1;i<nums.length;i++){
cur=Math.max(nums[i],cur+nums[i]);
best=Math.max(best,cur);
} return best;
}
1. Track current and best 2. Restart or extend