Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除阵列中的重复元素_Java_Sorting - Fatal编程技术网

Java 删除阵列中的重复元素

Java 删除阵列中的重复元素,java,sorting,Java,Sorting,我想了解我在Geeksfogeks学习的代码中的一行。以下是主要代码: class Main { // Function to remove duplicate elements // This function returns new size of modified // array. static int removeDuplicates(int arr[], int n) { // Return, if array is empty /

我想了解我在Geeksfogeks学习的代码中的一行。以下是主要代码:

class Main
{
    // Function to remove duplicate elements
    // This function returns new size of modified
    // array.
   static int removeDuplicates(int arr[], int n)
   {
    // Return, if array is empty
    // or contains a single element
    if (n==0 || n==1)
        return n;

    int[] temp = new int[n];

    // Start traversing elements
    int j = 0;
    for (int i=0; i<n-1; i++)
        // If current element is not equal
        // to next element then store that
        // current element
        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;
}

public static void main (String[] args) 
{
    int arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5};
    int n = arr.length;

    n = removeDuplicates(arr, n);

    // Print updated array
    for (int i=0; i<n; i++)
       System.out.print(arr[i]+" ");
}
}
这条路线的目的是什么?我知道它增加了J的值,但是“n-1”没有什么意义

我将非常感谢您对本主题的任何见解,并提前感谢您抽出时间

删除阵列中的重复元素

您的程序不会从阵列中删除重复项。只有当它们是连续的时,它才会删除它们。例如,{1,2,2,3}变成了{1,2,3},但是{1,2,3,2}仍然是{1,2,3,2}。但是,如果对输入数组进行排序,则将删除所有重复项。请注意,在{1,2,2,3}中,第二个数字2被添加到temp[]。(意味着只有按相等数字顺序排列的最后一个数字被添加到临时[])

静态int-removeDuplicates(int-arr[],int-n)

您不需要调用方传递数组的大小。在Java中,数组是特殊的对象,它提供了一个名为
length
的属性。因此,您可以计算出长度,如So
int n=arr.length。您需要用C语言传递数组大小,而不是Java语言

我不明白的是这句话

 temp[j++] = arr[n-1]; 
温度[j++]=arr[n-1]

检查此语句上方的
for
循环的条件


由于for循环的条件,需要使用for(int i=0;i
temp[j++]=arr[n-1]

For循环一直迭代,直到i小于n-1。 如果数组的大小是4,例如数组:
{1,2,3,4}

n-1
=索引3不能与索引4比较(
arr[i+1]

这可以防止for循环超出边界。 由于最后一个元素未添加到临时数组,
temp[j++]=arr[n-1]
需要将最后一个元素添加到temp数组中。

我建议返回结果数组的可能副本。不要修改原始数组。我建议只将元素添加到
集合