java - 连续子数组的最大和

标签 java arraylist contiguous

查找数组中长度为 N 且总和最大的连续子数组 A。

输入格式:

第一个也是唯一的参数包含一个整数数组 A。

输出格式:

返回一个整数,表示连续子数组的最大可能总和。

限制:

1 <= N <= 1e6 -1000 <= A[i] <= 1000

例如:

输入1: A = [1, 2, 3, 4, -10]

输出 1: 10

解释1: 子数组 [1, 2, 3, 4] 的最大可能和为 10。

输入2: A = [-2, 1, -3, 4, -1, 2, 1, -5, 4]

输出2: 6

解释2: 子数组 [4,-1,2,1] 的最大可能和为 6。

您能否告诉我为什么以下代码不起作用,以及代码中的错误是什么:

public class Solution {

public int maxSubArray(final List<Integer> A) {

    ArrayList<Integer> al = new ArrayList<Integer>();
    int sum = 0;
    int max = A.get(0);
    int min = A.get(0);
    for(int i = 0;i < A.size();i++){

        sum += A.get(i);
        al.add(sum);
        if(sum > max) max = sum;

    }

    //to find the min till the index of max
    for(int i = 0; al.get(i) != max;i++) {
        if(al.get(i) < min) min = al.get(i);
    }



    if(min < 0)return max-min;
    else return max;
}



}

最佳答案

假设这样的情况

A = [-120, -202, -293, -60, -261, -67, 10]

所以一开始

max = -120 
min = -120

现在,在第一个循环期间,您的最大值不会改变,它将保持在 -120,因为总和始终小于 -120。

从那以后你的第二个循环也不会运行,

al.get(i) = -120max = -120 那么 al.get(i) != max 将是错误。

关于java - 连续子数组的最大和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58053443/

相关文章:

Java 到 XML 的转换?

java - 我可以在 CardLayout 中设置单个面板的大小吗?

java - for 循环中的构造函数

java - 无法在 ArrayList<String> 中找到匹配的字符串

r - 如何在 R 中的稀疏矩阵中查找和命名连续的非零条目?

c - 最大和连续子数组使用递归直接输出结果

c++ - 为什么将树存储为连续的内存块?

java - 如何编写JPA查询

java - JPA 延迟加载和泛型

java - 恢复 ArrayList 中的 CheckBox 状态永远不会将 CheckBox 设置为已选中