思路:
输入一个数组比如a1={1,2,3},重新定义一个数组长度为2a1的数组a2={1,2,3,1,2,3},用新定义的数组来求最大子数组的和。
代码:
public class shuzutest { static int[] arr = { -1,2,-4,3,1 }; static int maxIndex = arr.length; static int[] arr1 = new int[2*maxIndex]; public static void main(String[] args) { for(int i=0;i<maxIndex;i++) { arr1[i]=arr[i]; arr1[i+maxIndex] = arr[i]; } findMaxArr3(); } static void findMaxArr3() { int max = arr1[0];// 最大值 int sum = 0;// 求和 for (int i = 0; i <2*maxIndex; i++) { if (sum >= 0) { sum += arr1[i]; } else { sum = arr1[i]; } if (sum > max) { max = sum; } } System.out.println("最大值为:" + max); } }
截图:
改变数组截图: