【发布时间】:2018-12-05 15:41:48
【问题描述】:
我的代码不适用于 s=120331635 和非常长的数组。请在此处找到数组
http://www.filedropper.com/arraytnt。我收到错误 Exception in thread "main" java.lang.StackOverflowError at Solution.fsub(Solution.java:17) 多次出现。
问。给定一个由 n 个正整数组成的数组和一个正整数 s,求和 ≥ s 的连续子数组的最小长度。如果没有,则返回 0。
例子:
输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 说明:子数组[4,3]在问题约束下的长度最小
类解决方案{
public int minSubArrayLen(int s, int[] nums) {
if(nums.length==0) return 0;
return fsub(s,nums,0,1);
}
public int fsub(int s, int[] A, int i, int f){
int n=A.length;
if(f>n) return fsub(s,A,0,f-i+1);
int sum = 0; for(int j = i;j<f;j++) {sum += A[j];}
if(sum>=s) return(f-i); // if found
else if(f-i == n) return 0; // if nothing found
return fsub(s,A,i+1,f+1);
}
}
【问题讨论】:
-
如果你用调试器慢慢地运行它,你会很快看到错误发生在哪里。
标签: java arrays recursion runtime-error stack-overflow