问题描述
假设我有10 步骤1:找出10-> 1,2,5,10的因数 步骤2:我需要找到每个1,10的因子。所以它将是数组-> 1,1,10 步骤3:现在,我需要继续查找数组中每个数字的因数 这将进行n次。
有没有人知道如何用最少的时间和空间来完成
解决方法
- 编写自己的
factor
函数来查找一个数的因数 - 使用
flatMap
将函数应用于数字数组 - 在第2步上循环(使用简单的for循环)重复
n
次。
请参阅flatMap
的文档:https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#flatMap-java.util.function.Function-
第1步:编写具有以下签名的方法。
public List<Integer> generateFactors(List<Integer> numbers)
第2步:调用此方法N次。
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
for (int i = 0; i < n; i++) {
numbers = generateFactors(numbers);
}
第3步:打印列表。
System.out.println(Arrays.toString(list.toArray()));