题解 | #连续最大和#

连续最大和

https://www.nowcoder.com/practice/5a304c109a544aef9b583dce23f5f5db

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static int getMax(int a,int b){ //获取最大值的函数
    return a>b?a:b; //三目运算符
    } 
    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int[] array = new int[n]; //初始化数组
            for(int i=0;i<n;i++){
                array[i]=in.nextInt();
            }
            int sum=array[0];  //当做dp[i]
            int max=array[0]; //存储dp[i]中的最大值
            for(int i=1;i<n;i++){  //i是从1开始的,因为0已结先做dp[i-1]l
            sum=getMax(sum+array[i],array[i]);//dp[i]的两种取值,找最大的
            if(sum>max){
                max=sum; //取缔max有两种情况,首先dp[i-1]是正数,然后dp[i]+正数,当然大于原来的max了,或者dp[i-1]为负数此时dp[i]就等于arr[i]
            }

            }
            
            System.out.println(max);
        }
        
    }
}

全部评论

相关推荐

程序员牛肉:你这其实一点都没包装,标准的流水线产品。 实习现在不一定能解决你的问题,你太浮躁了。你看了多少源码?看了多少技术博客?真的没必要这么浮躁的着急找实习,沉下心来学习
投递实习岗位前的准备
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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