【发布时间】:2016-05-25 12:30:35
【问题描述】:
我需要从大小 n 中找到由 numbers 数组中的数字组成的所有组合。我尝试使用我在下面编写的函数来执行此操作,但这样做需要大量时间和内存。
有没有更高效的方法?
void createCombinationArray(ArrayList<Integer> numbers, int n, ArrayList<Integer> start) {
if (start.size() >= n) {
monthsComb.add(new ArrayList<>(start));
} else {
for (Integer x : numbers) {
start.add(x);
createCombinationArray(numbers, n, start);
start.remove(start.lastIndexOf(x));
}
}
}
【问题讨论】:
-
当
numbers中有k元素时,您将获得k^n组合。即使对于相对较小的数字,这也是很多。因此,如果它需要很长时间并且占用大量内存,请不要感到惊讶
标签: java arrays combinations