繁体   English   中英

是否可以使用 Floyd 的龟兔算法在 O(n) 时间、O(1) 空间复杂度内从未排序的数组中删除重复项?

[英]Is it possible to remove duplicates from an unsorted array in O(n) time, O(1) space complexity, using the Floyd's tortoise and hare algorithm?

是否可以使用 Floyd 的龟兔算法在 O(n) 时间、O(1) 空间复杂度内从未排序的数组中删除重复项? 考虑数组 [3,1,3,4,2]。 删除重复项后,function“remove_dups”必须返回 [3,1,4,2]。 此外,function 应该适用于数组中的负整数。

对的,这是可能的。 这个想法是将数组项视为链表节点。 任何特定索引都指向该索引处的值。

你会看到在重复的情况下存在循环,两个索引将具有相同的值,它们将形成一个循环,如下图所示。

例子:

1->2->3->4->5->6->3

所以我们可以在链表中找到循环的入口点,这将是我们的重复元素。

资料来源: https://www.geeksforgeeks.org/find-duplicates-constant-array-elements-0-n-1-o1-space/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM