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
.
Subscribe to see which companies asked this question
1 public class Solution { 2 public int maxSubArray(int[] nums) { 3 if(nums == null) return 0; 4 if(nums.length == 1) return nums[0]; 5 int curmax = 0; 6 int ans = Integer.MIN_VALUE; 7 for(int i = 0;i<nums.length;i++){ 8 curmax += nums[i]; 9 ans = Math.max(curmax,ans); 10 if(curmax < 0) curmax = 0; 11 } 12 return ans; 13 } 14 }
使用DP即可。
如果要求的是subarray的 的起始位置,则需要加上 startIndex, 和endIndex变量。即可得出。
时间: 2024-10-05 16:34:55