Java 删除阵列中的重复元素
我想了解我在Geeksfogeks学习的代码中的一行。以下是主要代码: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 /
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
的属性。因此,您可以计算出长度,如Soint n=arr.length代码>。您需要用C语言传递数组大小,而不是Java语言
我不明白的是这句话
temp[j++] = arr[n-1];
温度[j++]=arr[n-1]
检查此语句上方的for
循环的条件
由于for循环的条件,需要使用for(int i=0;itemp[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数组中。我建议返回结果数组的可能副本。不要修改原始数组。我建议只将元素添加到集合