3月11号笔记
今天老师留了一个问题,代码如下:
问题:返回一个整数数组中最大连续子数组的和(子数组里最少有一个数,-99999<ai<99999)。
要求时间复杂度为O(n)。
import java.util.Scanner;
public class Main {
public static int max(int a,int b) {
return a>b?a:b;
}
public static void main(String[] args) {
int[] a=new int[10010];
int[] res=new int[10010];
int n,k=0;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
for(int i=1;i<=n;i++) {
a[i]=sc.nextInt();
}
int k=a[0];
for(int i=1;i<=n;i++) {
if(res[i-1]<0) res[i]=a[i];
else res[i]=a[i]+res[i-1];//res[i]表示以i结尾的连续子序列中,最大值为多少。
k=max(k,res[i]);
}
System.out.println(k);
}
}

浙公网安备 33010602011771号