簡體   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