package org.example.test; /** * 子数组最大求和公式: * 如果以数组下标结尾的前面最大子数组和+arr[i+1]>=arr[i+1],则i+1的最大子数组和为arr[i]+前面i结尾的子数组和 * 如果小于,则i+1的最大子数组和为arr[i+1]; */ public class MaxSumTest { public static void main(String[] args) { int[] nums = {1, -2, 3, 5, -2, 6, -1}; System.out.println(maxsumofSubarray(nums)); } public static int maxsumofSubarray(int[] arr) { int max = arr[0]; int now = 0; for (int value : arr) { now = Math.max(value + now, value); max = Math.max(now, max); } return max; } }