Вы получаете IndexOutOfBoundsException
, когда пытаетесь удалить дубликаты из вашего массива colors
. Это связано с тем, что метод remove()
для ArrayList
может принимать Object
или int
, а вы передаете int
. Это означает, что вы на самом деле пытаетесь удалить определенный индекс, который, в вашем примере, является индексом 20, но этот индекс не существует в вашем массиве.
Вы можете изменить свой код как таковой, чтобы удалить значенияправильно на основе индекса.
static int sockMerchant(int n, int[] ar) {
ArrayList<Integer> colors = new ArrayList<Integer>(10);
int pairs = 0;
for (int i = 0; i < n; i++) {
if (!colors.contains(ar[i])) {
colors.add(ar[i]);
} else {
pairs++;
colors.remove(color.indexOf(ar[i]));
}
}
System.out.println(pairs);
return pairs;
}