这是我的代码,用于查找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
答案 0 :(得分:1)
我怀疑问题是这样的:int
32位int
可存储最多2,147,483,647的数字,但9
数字的13个实例的可能乘积为2,541,865,828,329。
result
和max
值必须为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所指出的那样