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);
		
	}
}

posted @ 2022-03-11 17:29  zhuangzhongxu  阅读(52)  评论(0)    收藏  举报