连续最大和

题目描述

一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3

输入描述:

输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。

输出描述:

所有连续子数组中和最大的值。
示例1

输入

3 -1 2 1

输出

3

 1 import java.util.Scanner;
 2 /**
 3  * 
 4  *       从左向右 累加求连续子数组和,更新最大值,当字数组和小于零时就舍弃
 5  *
 6  */
 7 public class Main {
 8     
 9 static public int f(int [] ns) {
10     int maxSum =Integer.MIN_VALUE;
11     int sum = 0;
12     for (int i = 0; i < ns.length; i++) {
13         if (sum>=0) {
14             sum+=ns[i];
15         }else {
16             sum = ns[i];
17         }
18         if (sum>maxSum) {
19             maxSum = sum;
20         }
21     }
22     return maxSum;
23 }    
24 public static void main(String[] args) {
25 Scanner sc = new Scanner(System.in);
26 int n = sc.nextInt();
27 int[] ns = new int[n];
28 for (int i = 0; i < n; i++) {
29     ns[i] = sc.nextInt();
30 }
31 int maxSum = f(ns);
32 System.out.println(maxSum);
33 
34 }
35 }
原文地址:https://www.cnblogs.com/the-wang/p/8981231.html