Привет всем, есть метод public String[] remove(String[] array)
, который должен удалить все дубликаты в массиве. Для обрезания массива надо использовать метод Arrays.copyOf
, то есть метод должен заканчиваться на return Arrays.copyOf(исходный массив, кол-во не дублированных значений)
. Заранее прошу вас описать сам алгоритм в виде комментариев с боку.
Дополнительные условия:
Как-то так кажется. Суть алгоритма в том, что мы меняем местами найденный дубликат с элементом в конце массива (со сдвигом к началу на количество найденных дубликатов), при этом храним счетчик перемещенных дубликатов. while
нам помогает в ситуации если мы хотим свапнуть два одинаковых элемента, первое его условие защищает от выхода за границы массива.
@Test
public void tt(){
String[] strings = new String[]{"6","6","7","7","4","8","4","5","6","8", "8", "4", "7","6"};
System.out.println(Arrays.toString(remove(strings)));
}
private String[] remove(String[] strings){
int dup = 0;
for(int i = 0; i < strings.length; i++){
for(int j = i + 1; j < strings.length - dup; j++){
if(strings[i].equals(strings[j])){
while(j != strings.length - dup - 1
&& strings[strings.length - dup - 1].equals(strings[j])){
dup++;
}
String tmp = strings[strings.length - dup - 1];
strings[strings.length - dup - 1] = strings[j];
strings[j] = tmp;
dup++;
}
}
}
return Arrays.copyOf(strings, strings.length - dup);
}
Исходный массив:
[6, 6, 7, 7, 4, 8, 4, 5, 6, 8, 8, 4, 7, 6]
Массив после перемещения дубликатов в конец:
[6, 7, 8, 4, 5, 4, 4, 8, 8, 7, 7, 6, 6, 6]
Результат:
[6, 7, 8, 4, 5]
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
RESTful сервису 1 необходимо получить данные с RESTful сервису 2Данные можно получить по урлу: /products
Можно получить ответ простым человеческим языком?
Дело в том что, до этого времени, я интерфейсы реализовывал в Activity, значения методов задавал во FragmentТо есть, в onAttach() инициализировал, а потом...