在给定总和的子数组中,我被困在如何在 Java 中返回 ArrayList


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。

最新更新