给定一个负整数数组,例如:
{-1,-3,-4,-10,-22,-2}
我试图找到最接近0的总和。可以跳过数字,但不能连续。 例如,在上面的示例中,可能性为-1、-4、-22或-1、-3、-10、-2等。
上述数组的答案为-3、-10、-2=-15
我有一个使用递归的解决方案,但我想知道是否有人能想到我遗漏的更简单的解决方案?
{-1,-3,-4,-10,-22,-2}
我试图找到最接近0的总和。可以跳过数字,但不能连续。 例如,在上面的示例中,可能性为-1、-4、-22或-1、-3、-10、-2等。
上述数组的答案为-3、-10、-2=-15
我有一个使用递归的解决方案,但我想知道是否有人能想到我遗漏的更简单的解决方案?
private static int maxSum(int in[]){
return maxSum(in,0,in.length==1) ;
}
private static int maxSum(int in[], int off, boolean skipped){
if(off == in.length){
return 0;
}
else if(in.length - off >= 1){
if(skipped){
return in[off] + maxSum(in,off+1,false);
}
else{
int w0 = maxSum(in,off+1,true);
int wn0 = in[off] + maxSum(in,off+1,false);
return Math.max(w0,wn0);
}
}
else {
throw new RuntimeException();
}
}
{-7,-1,-2,-6}
应该得到-3
;但是在最初的例子{-1,-3,-4,-10,-22,-2}
中,为什么结果不是-4
(前两个)? - Eugene