0
我正在尋找一種方法來防止數組重複引用同一個對象。我不是說重複的值 - 那很好。我怎樣才能防止對數組中類對象的重複引用?
例如,我知道在Apple的SpriteKit框架中,一個SKNode對象將其子節點存儲在一個數組(var children: [SKNode]
)中,並且向父節點添加一個節點兩次會導致程序崩潰。
let parent = SKNode()
let child1 = SKNode()
let child2 = SKNode()
parent.addChild(child1)
parent.addChild(child2) // Allowed, although child2 == child1.
parent.addChild(child1) // Causes a crash.
這是我想要模仿的行爲的確切類型。我將如何管理這個?如果不需要比較每個參考的O(n)複雜性,是否可能?
我覺得OP問是否可以做到這一點不爲O(n )複雜性。但是你只是使用一個'set',它只是在添加之前檢查重複項,所以最壞情況的複雜度仍然是O(n)。 – ebby94
@ ebby94'Sets'中的查找是'O(1)'。 – Alexander
不知道。但是'Set'查找O(1)怎麼樣?使用下標進行訪問具有O(1)複雜性,但是查找重複項應該具有O(n)複雜性嗎?任何解釋這個的鏈接都會很酷:) – ebby94