#java
#java
Вопрос:
Я пытаюсь решить проблему, которая возвращает новый двойной массив, содержащий дублированные значения из другого двойного массива. Я не могу использовать HashSets или ArrayLists в этой проблеме. Я попытался использовать метод принудительной замены индексов из исходного массива и нового массива, который я создал. Однако я не получаю ожидаемых результатов. Я приложил скриншот своего кода и результат, который я получаю. Пример результатов, если эта функция верна, включает: new double [ ] {11, 22, 33, 44, 55, 66, 77, 88} < — Удаленные дубликаты (новый двойной [ ] {11, 11, 11, 11, 22, 33, 44, 44, 44, 44, 44, 55, 55, 66, 77, 88, 88}) введите описание изображения здесь
Комментарии:
1. Мой скриншот — это ссылка «введите описание изображения здесь». Спасибо!
2. Не показывайте нам свой код на скриншотах. Скопируйте и вставьте соответствующие части в вопрос и отформатируйте их, используя предоставленный синтаксис Markdown.
Ответ №1:
Я прочитал решение вашего вопроса в http://www.GeekersforGeeks.org . Здесь я включил то, что я нашел до сих пор. В следующем коде в функции removeDuplicates создается временный двойной массив, который используется для хранения нового массива после удаления дубликатов.
Логика, используемая здесь, довольно проста. Сначала он проверяет, не содержит ли данный массив элементов или только один элемент, и если это так, он просто возвращает массив, поскольку дублирования нет.
Затем он начинает обход элементов, и если два соседних элемента не равны (означает, что элементы уникальны), то эти элементы сохраняются в новом temp[] массиве. Если дубликаты найдены, они игнорируются и не сохраняются в массиве temp[] .
Наконец, он сохраняет последний элемент данного массива в массив temp[] .
Затем он изменяет исходный массив с помощью массива temp[] и возвращает исходный массив без дубликатов.
static int removeDuplicates(double arr[], int n)
{
// return the array itself, if it is empty or contains only one element
if (n==0 || n==1)
return n;
//creating a temporary array to hold new array data
double[] temp = new double[n];
// Start traversing elements
int j = 0;
for (int i=0; i<n-1; i )
//checking for duplicates and store elements in
//temp[] array if not duplicated.
if (arr[i] != arr[i 1])
temp[j ] = arr[i];
// Store the last element as whether
// it is unique or repeated, it hasn't
// stored previously
temp[j ] = arr[n-1];
// Modify original array
for (int i=0; i<j; i )
arr[i] = temp[i];
return j;
}