在给定总和的子数组中,我一直在研究如何 return Java 中的 ArrayList
In Subarray with given sum I'm stuck on how to return an ArrayList in Java
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。但是我无法 return 位置作为 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;
}
}
return 值应该是一个 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。但是我无法 return 位置作为 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;
}
}
return 值应该是一个 ArrayList。