要求:
给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。要求时间复杂度为O(n)。
思路:
这是一道考察算法的题,对比每一个子数组的和,还有对时间复杂度的要求。
过程与结果:
总的来讲花费的时间挺多的,可能因为,额,好吧,不是可能,是就是本来基础很差,所以实际动手的时候不太会,钻研了半天,最后还是从网上查找了查找解决方案,但是最后还是没能解决时间复杂度O(n)的问题,只做到了时间复杂度O(n²)。
package com;
public class zihe {
public static int sumN2(int [] array){
int sum=0,maxSum=Integer.MIN_VALUE;
int n=array.length;
int count=0;
for(int i=0;i<n;i++){
sum=0;
for(int j=i;j<n;j++){
sum+=array[j];
if(sum>maxSum){
maxSum=sum;
}
count++;
} }
System.out.println("length="+n+"||count="+count);
return maxSum;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] array={-5,-2,-3,-5,-3,-2};
int sum=zihe.sumN2(array);
System.out.println("最大子序列和="+sum);
}
}