题解 | 最大子段和

最大子段和

https://www.nowcoder.com/practice/f04519cd1d904f50b68f4229a126ab08

import java.util.Scanner;

import java.io.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(new BufferedInputStream(System.in));
        PrintWriter out = new PrintWriter(System.out);
        int n = in.nextInt();
        int[] nums = new int[n + 1];
        //i结尾最大子数组和
        long[] dp = new long[n + 1];

        for (int i = 1; i <= n; i++) {
            nums[i] = in.nextInt();
        }
        dp[1] = nums[1];
        long ans = nums[1];
        for (int i = 2 ; i <= n; i++) {
            dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
            if (dp[i] > ans) {
                ans = dp[i];
            }
        }
        out.println(ans);
        out.flush();
    }
}

全部评论

相关推荐

caicaidog:现实里没实习的还是占多数的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务