1003.Max Sum


一开始是开了一个二维数组 保存每一个位置所对应的值 结果发现过于啰嗦 而且过于臃肿 导致我出错后一直找不到那里错 所以参考了其他解法 改写原来的方法

import java.util.*;
public class Main {
    public static void main(String[] args) {
        int w = 1;
        int[] arr = new int[100002];//会被覆盖
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while (n > 0) {
            int num = sc.nextInt();
            // 将数据放进数组中 maxsum 统计最大值 flag 临时最大值
            int maxSum = -9999;
            int flag = 0;//一段数据的极大值 不一定为最大值
            int star = 0;//开始位置 从0 开始
            int end = 0;//结束位置 从0 开始
            int z = 0;//记录正确的位置
            for (int i = 0; i < num; i++) {
                arr[i] = sc.nextInt();// 读取数据 然后进行处理
                flag += arr[i];
                if (flag > maxSum) {
                    maxSum = flag;
                    end = i;
                    star = z;
                }
                if (flag < 0) {// 归零处理 根据判断 此处arr[i]为负数
                    flag = 0;
                    z = i + 1;//z仅在这里修改
                }
            }
            System.out.println("Case "+(w++)+":");
            System.out.println(maxSum+" "+(star+1)+" "+(1+end));
            if (n != 1) 
                System.out.println();
            n--;
        }
    }
}
全部评论

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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