Как создать функцию, которая возвращает новый массив, содержащий повторяющиеся значения другого массива

#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; 
}