/* * 问题:求一个给定数组中的最大连续元素和。 * 以Ai代表数组中截止下标为i的子数组最大连续元素和(i=0,1,2... * 求Ai可以考虑将Ai分为该截止元素+之前元素的和与该截止元素两部分,求最 * * */
public class MaxSubArray { public int maxSubArray(int[] nums) { int pre = 0; int maxsubarray = nums[0]; for(int num: nums){ pre = Math.max(pre+num, num); maxsubarray = Math.max(maxsubarray,pre); } return maxsubarray; } public static void main(String[] args) { int[] nums = {-2,1,-3,4,-1,2,1,-5,4}; MaxSubArray m = new MaxSubArray(); int sum = m.maxSubArray(nums); System.out.println(sum); } }