Chwil kilka zastanawiam się jak można byłoby jeszcze udoskonalić (w sensie optymalizacyjnym) zadanie ze spoja tj. http://pl.spoj.com/problems/AL_26_04/
Mój kod wygląda następująco i nie przechodzi próby czasu:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class klasaGlowna {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int iterations = scanner.nextInt();
int[] result = new int[iterations];
for (int i = 0; i < iterations; i++) {
int ammountOfNumbers = scanner.nextInt();
int[] numberInput = new int[ammountOfNumbers];
for (int j = 0; j < ammountOfNumbers; j++) {
numberInput[j] = scanner.nextInt();
}
List<Integer> helpingArray = new ArrayList<>(ammountOfNumbers);
for (int k = 0; k < ammountOfNumbers; k++) {
if (helpingArray.indexOf(numberInput[k]) == -1)
helpingArray.add(numberInput[k]);
else
helpingArray.remove(helpingArray.indexOf(numberInput[k]));
}
result[i] = helpingArray.get(0);
}
for(int e : result){
System.out.println(e);
}
}
}
Miałby ktoś jakiś pomysł jak usprawnić kod? Może użyć jakiejś innej efektywniejszej struktury?
Czy podział na oddzielne metody wpłynie jakoś na efektywność?