如何创建函数以返回包含另一个数组重复值的新数组

时间:2019-04-21 01:06:15

标签: java

我正在尝试解决一个问题,该问题返回一个新的双精度数组,其中包含另一个双精度数组中重复的值。我不能在此问题中使用HashSets或ArrayLists。我尝试使用一种强力方法从原始数组和我制作的新数组交换索引。但是,我没有得到预期的结果。我附上了我的代码和得到的输出的屏幕截图。如果此函数正确,则示例结果包括:new double [] {11,22,33,44,55,66,77,88} <--removeDuplicates(new double [] {11,11,11,11, 22、33、44、44、44、44、44、55、55、66、77、88、88})enter image description here

1 个答案:

答案 0 :(得分:-2)

我已经在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; 
}