1000位数字中具有最大产品的13个相邻数字

时间:2015-01-27 03:51:32

标签: java

这是我的代码,用于查找1000位数字中具有最佳产品的13个相邻数字。

谁能告诉我哪里做错了?

for(int i = 0; i <= list.size()-13 ; i++){
    int result = list.get(i);
    for(int j = i +1; j <= i+12; j++){
        result = result * list.get(j);
                                     }
        if(result > this.max){
            this.max = result;
                             }
                                         } 

更新: 感谢帮助大家,我应该用long而不是int。这就是全部。 问题解决了。再次感谢 。 :D

2 个答案:

答案 0 :(得分:1)

我怀疑问题是这样的:int

32位int可存储最多2,147,483,647的数字,但9数字的13个实例的可能乘积为2,541,865,828,329。

resultmax值必须为long,而不是int

答案 1 :(得分:0)

我没有测试它,但我认为这应该有效:

int const ADJ_NUMBERS= 13;
long maxVal = 0;
long currentVal;

for(int i = 0; i < list.size() - ADJ_NUMBERS; i++){
    currentVal = list.get(i);
    for(int j = 1; j < ADJ_NUMBERS; j++){
        currentVal *= list.get(i+j);
    }
    if(maxVal < currentVal){
        maxVal = currentVal;
    }
}

结果是maxVal变量。

问候。

编辑:将变量类型更改为long,正如https://stackoverflow.com/a/28163140/4430913

中的Hot Licks所指出的那样