52. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [−2,1,−3,4,−1,2,1,−5,4],
the contiguous subarray [4,−1,2,1] has the largest sum = 6.
More practice:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
---
Idea:
- DP
” if the previous sum are +, which is then useful for the current element, or if it is -, why not start the sub array from current element? We can use an int to store the max sum we have got, just scan the whole array, the result is easily found.“
---
public class Solution { public int maxSubArray(int[] A) { int sum = 0; int max = Integer.MIN_VALUE; for(int i =0; i < A.length ; i ++){ if(sum<0) sum=0; sum += A[i]; if(sum>max) max=sum; } return max; } }
浙公网安备 33010602011771号