给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 就是求这里面哪几个相邻的数,相加最大,求和
进阶:
如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
/** * @Author : Yanqiang * @Date : 2019/5/21 * @Param : [nums] * @return : int * @Description : 最大子序和 * n: 从第一个正数开始,一直往后累加,如果加到 n > sum,说明之前sum存的并不是最大的子序列,将n 赋值给sum */public static int maxSubArray(int[] nums) {// 动态规划法 //储存最大的子序列的和 int sum=nums[0]; int n=nums[0]; for(int i=1;i0){ n += nums[i]; }else { n = nums[i]; } if(sum < n){ sum = n; } } return sum;}public static void main(String[] args) { int[] a = {-2,1,3,4,-1,2,1,-5,4}; System.out.println(maxSubArray(a));}