Правила[Одномерные массивы]
57. Дан одномерный массив чисел, среди элементов которого есть одинаковые. Создать новый массив из различных элементов исходного массива.
0
Комментарии (10)
популярные
новые
старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Я тоже не совсем понял условие, у меня было два варианта:
1. надо вернуть только те числа, которые встречаются в массиве 1 раз.
2. надо убрать дубли, оставив все числа по 1 разу.
Ваш метод по первому варианту отрабатывает нормально, только еще и сортирует исходный массив.
aiv совершенно верно написал, на самом деле я хотел написать, что свап и-элемента в конец, но не хватило моих знаний английского, поэтому выразился более лаконично)))
public static int[] getUniqueValuesArrays2(int... array) {
int[] temp = new int[array.length];
int count = 0;
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++)
if (array[i] == array[j]) {
temp[i]++;
temp[j]++;
break; // возможность уменьшить хоть как то кол-во итераций и присваиванией, без этого можно получить кол-во повторений в массиве
}
if(temp[i] < 1)
temp[count++] = array[i];
}
return Arrays.copyOf(temp, count);
}
2)
public static int[] getUniqueValuesArrays(int... array) {
int[] temp = new int[array.length];
int count = 0;
label1: for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++)
if (array[i] == array[j])
continue label1;
temp[count++] = array[i];
}
return Arrays.copyOf(temp, count);
}
если не сложно объясни про // *** swap i-element
1. надо вернуть только те числа, которые встречаются в массиве 1 раз.
2. надо убрать дубли, оставив все числа по 1 разу.
Ваш метод по первому варианту отрабатывает нормально, только еще и сортирует исходный массив.
в конец массива перемещаются все элементы, равные i-му.
А здесь
в конец перемещается сам i-й элемент.
а первый или второй вариант разница невелика)
вот оно че, этот блок можно убрать, так как в задании нужно убрать дубликаты…
это как если бы мы в сет добавляли, должно получиться
2)