给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组
public static List<Integer> subArraySumItem(int[] params) { int currentSum = 0; int maxSum = 0; int curStart = 0; int start = 0; int end = 0; for (int i = 0; i < params.length; i++) { currentSum += params[i]; if(currentSum > 0) { if (currentSum > maxSum) { maxSum = currentSum; start = curStart ; end = i; } }else{ currentSum = 0; curStart = i ; } } List<Integer> list = new ArrayList<Integer>(); for (int i = start+1; i <=end ; i++) { list.add(params[i]); } return list; }
/** * 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 * 样例 * 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 * * @param args */ public static void main(String[] args) { int[] arrays = new int[]{-2, 2, -3, 4, -1, 2, 1, -5, 3}; List<Integer> list = subArraySumItem(arrays); System.out.println("list=" + JsonUtil.toJson(list)); }