static ArrayList<Integer> subarraySum(int[] arr, int n, int s) {
// Your code here
int sum, i, j;
// Pick a starting point
for (i = 0; i < n; i++) {
sum = arr[i];
// try all subarrays starting with 'i'
for (j = i + 1; j <= n; j++) {
if (sum == s) {
int p = j - 1;
return new ArrayList[] { j, p };
}
if (sum > s || j == n)
break;
sum = sum + arr[j];
}
}
return -1;
}
问题是给定一个大小为N的未排序数组A,只包含非负整数,找到一个连续的子数组,加上给定的数字s,但我无法返回位置作为ArrayList。
下面的代码显示了一个错误:
Compilation Error:
prog.java:45: error: incompatible types: int cannot be converted to ArrayList
return new ArrayList[] { j, p };
^
prog.java:45: error: incompatible types: int cannot be converted to ArrayList
return new ArrayList[] { j, p };
^
prog.java:45: error: incompatible types: ArrayList[] cannot be converted to ArrayList<Integer>
return new ArrayList[] { .................
class Subarray{
static ArrayList<Integer> subarraySum(int[] arr, int n, int s) {
// Your code here
ArrayList<Integer> a = new ArrayList<Integer>();
int sum, i, j;
// Pick a starting point
for (i = 0; i < n; i++) {
sum = arr[i];
// try all subarrays starting with 'i'
for (j = i + 1; j <= n; j++) {
if (sum == s) {
a.add(i+1);
a.add(j);
return a;
}
if (sum > s || j == n)
break;
sum = sum + arr[j];
}
}
a.add(-1);
return a;
}
}
返回值应该是一个ArrayList。