Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Arrays 如何从阵列中删除重复项_Arrays_Algorithm - Fatal编程技术网

Arrays 如何从阵列中删除重复项

Arrays 如何从阵列中删除重复项,arrays,algorithm,Arrays,Algorithm,可能重复: 这是一个家庭作业问题。我认为最好的方法是修改的合并排序,其中修改的合并不会将重复元素从两个输入数组复制到结果数组。复杂性为O(N*logN)(与常规的合并排序完全相同)。这有意义吗?有更好的解决办法吗?听起来不错。或者您可以进行任何排序,然后删除复杂度为O(N)的重复项。听起来不错。或者,您可以进行任何类型的排序,然后删除复杂度为O(N)的重复项。如果您不需要排序,只需删除重复项即可使用哈希集(或您的等效语言)在O(N)时间内完成。如果您不需要排序,只需使用哈希集在O(N)时间内完

可能重复:


这是一个家庭作业问题。我认为最好的方法是修改的
合并排序
,其中修改的
合并
不会将重复元素从两个输入数组复制到结果数组。复杂性为O(N*logN)(与常规的
合并排序
完全相同)。这有意义吗?有更好的解决办法吗?

听起来不错。或者您可以进行任何排序,然后删除复杂度为O(N)的重复项。

听起来不错。或者,您可以进行任何类型的排序,然后删除复杂度为O(N)的重复项。

如果您不需要排序,只需删除重复项即可使用哈希集(或您的等效语言)在O(N)时间内完成。

如果您不需要排序,只需使用哈希集在O(N)时间内完成删除重复项即可(或您的等效语言)。

首先,您必须对数组进行排序,因为它是一个已排序的数组,任何重复项都将彼此相邻。因此,从开头开始,将每个元素与其右侧的相邻项进行比较。如果没有重复项,则进行了n-2次比较,就完成了


如果你发现一个重复的元素,你将会有一个洞。因为它是一个数组,而不是一个链接列表,你将需要向下移动每个元素。(如果允许的话,你可以创建一个新数组。)但是,您不只是想开始向下移动所有内容,您可以简单地用指针或计数器标记孔的位置,然后继续进行下一次比较。当您获得下一个非重复项时,您将移动(复制)将该元素放入孔中,并将孔计数器增加1。

首先必须对数组进行排序,因为它是一个已排序的数组,任何重复项都将彼此相邻。因此,从开始处开始,将每个元素与其右侧的相邻项进行比较。如果没有重复项,则进行了n-2次比较,就完成了


如果你发现一个重复的元素,你将会有一个洞。因为它是一个数组,而不是一个链接列表,你将需要向下移动每个元素。(如果允许的话,你可以创建一个新数组。)但是,您不只是想开始向下移动所有内容,您可以简单地用指针或计数器标记孔的位置,然后继续进行下一次比较。当您获得下一个非重复项时,您将移动(复制)将该元素复制到孔中,并将孔计数器增加1。

可能的重复项:,,可能的重复项:,,谢谢,我不需要对它们进行排序。我可以将数组元素复制到一个集合中,然后将集合复制到一个数组中。顺便说一句,可以使用TreeSet对数组进行排序。小心。如果使用TreeSet,您将恢复到O(n*log)(N) )。但是,排序允许使用N向排序或类似的方法,如果数据集不能(很好地)放入内存中,这非常方便。但这已经进入了“其他问题”的领域 :p@treenplusone谢谢,你对TreeSet的看法是对的。HashSet对大多数数据集都是以固定时间进行查找的,但边界实际上更糟糕。谢谢,我不需要对它们进行排序。我可以将数组元素复制到集合中,然后将集合复制到数组中。顺便说一句,可以使用TreeSet对数组进行排序。小心。如果使用TreeSet,您将恢复到O(n*log(n))。但是,排序允许使用n向排序或类似的方法,如果数据集不能(很好地)放入内存中,这非常方便。但这已经进入了“其他问题”领域 :p@treenplusone谢谢,您对TreeSet的看法是对的。HashSet对大多数数据集都是以固定时间进行查找的,但其界限实际上要糟糕得多。