Пункт _ Метод getNumbers должен возвращать массив чисел удовлетворяющих условию задачи._ не проходит, хотя вроде выводит правильно числа
package com.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/*
Алгоритмы-числа
*/
public class Solution {
public static long[] getNumbers(long N) {
long[] result = null;
long[] temp = new long[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Long> resultList = new ArrayList<>();
// Collections.addAll(resultList, 1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l);
int pow = 1;
for (long i = 1; i < N; i++) {
String numberStr = i + "";
char[] numbers = numberStr.toCharArray();
if (pow < numbers.length) {
for (int j = 2; j < temp.length; j++) {
temp[j] *= j;
}
pow = numbers.length;
}
long sum = 0;
for (char number : numbers) {
sum += temp[Character.getNumericValue(number)];
}
if (sum == i) resultList.add(i);
}
result = resultList.stream()
.mapToLong(Long::valueOf)
.toArray();
return result;
}
public static void main(String[] args) {
long a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000)));
long b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000000)));
b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
}
}