Добрый день. https://acmp.ru/article.asp?id_text=198 читал.
Подскажите, пожалуйста, в чем ошибка?
Спасибо.
package com.javarush.task.task20.task2025;
import java.util.*;
/*
Алгоритмы-числа
*/
public class Solution {
/*public static long[] getNumbers(long N) {
long[] result = null;
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);
}
public static long[] getNumbers(long N) {
TreeSet<Long> resultList = new TreeSet<Long>();
for (long i = 0; i < N; i++) {
boolean add = true;
int length = ("" + i).length();
if (length > 1) {
for (int j = 0; j <= length - 2; j++) {
String num = String.valueOf(i);
if (!(Integer.parseInt(String.valueOf(num.charAt(j))) <= Integer.parseInt(String.valueOf(num.charAt(j + 1))))) {
add = false;
break;
}
}
}
if (String.valueOf(i).charAt(String.valueOf(i).length()-1) == '0') {
add = true;
}
if (add) {
long sum = 0l;
for(int k = 0; k < String.valueOf(i).length(); k++) {
sum += (long) Math.pow(Integer.parseInt(String.valueOf(String.valueOf("" + i).charAt(k))), String.valueOf(i).length());
}
String number = String.valueOf(i);
ArrayList<Integer> set = new ArrayList<Integer>();
for(int q = 0; q < number.length(); q++) {
set.add(Integer.parseInt(String.valueOf(number.charAt(q))));
}
String sumString = String.valueOf(sum);
ArrayList<Integer> set2 = new ArrayList<Integer>();
for(int q = 0; q < sumString.length(); q++) {
set2.add(Integer.parseInt(String.valueOf(sumString.charAt(q))));
}
Collections.sort(set);
Collections.sort(set2);
if (set.equals(set2)) {
if (!(resultList.contains(sum))){
resultList.add(sum);
}
}
}
}
long[] result = new long[resultList.size()];
int counter = 0;
for(Long l : resultList) {
result[counter] = l;
counter++;
}
return result;
}
}