输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)(解决)
2020-12-13 04:35
标签:turn 时间 思路 rgs 描述 print imp java subject 输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)。 思路:对输入的数组进行计算, import java.util.Scanner; public class Main { public static void main(String[] args){ for(int i=0;i System.out.println(findMax(array,array[0])); } public static int findMax(int[]array,int maxSum){ if(array[i]>0){//如果当前的元素大于0,则把它的值加入当前目标子集的和 }else{//如果localSum小于0,说明之前的一些元素有比较大的负数,那么就从当前位置开始重新寻找, } if(maxSum maxSum = localSum; return maxSum; } 输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)(解决) 标签:turn 时间 思路 rgs 描述 print imp java subject 原文地址:https://www.cnblogs.com/ffaiss/p/11115086.html输入描述:
【重要】第一行为数组的长度N(N>=1)
接下来N行,每行一个数,代表数组的N个元素输出描述:
最大和的结果
输入例子1:
8
1
-2
3
10
-4
7
2
-5
输出例子1:
18
Scanner in = new Scanner(System.in);
int inputSize = in.nextInt();
int[] array = new int[inputSize];
}
int localSum = 0;//存储当前的可能是目标子集的元素和
int inputSize = array.length;
for(int i =0;i
if(localSum localSum=0;
}
localSum+=array[i];
}else {//如果当前的元素小于0,则要判断localSum是否大于0,如果大于0,则加入当前元素值(因为之后可能仍然有很大的数)
if(localSum>0){
localSum+=array[i];
localSum = array[i];
}
}
}
}
文章标题:输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)(解决)
文章链接:http://soscw.com/essay/29627.html