2016-11-30 55 views

回答

0

考慮一個功能foo每個元素映射到一個唯一的整數,而整數集從0一定到n

然後,您可以聲明大小爲n的布爾類型的數組arr

然後遍歷您的元素數組,每個元素調用foo以產生索引i。您檢查arr[i]以查看它是否已設置爲true。如果它有,那麼你沒有一套獨特的元素。如果arr沒有該元素,則設置arr[i] = true

這是O(N),但在存儲方面很昂貴。

+0

我不認爲在O(n)中創建數組是可能的,是嗎? –

+0

這是對OS的調用,肯定不會比O(n)更差。 *初始化*它是O(n)。 – Bathsheba

1
  • 創建一個空的字典
  • 列表中的
    • 每一個元素,如果該元素已經在字典,返回true
    • 其他元素添加到字典
  • 如果達到列表的末尾,返回false
+0

我認爲這是因爲插入到字典中不是O(1)。你只是在複雜的道路上踢球。 – Bathsheba

+0

爲什麼不呢? https://wiki.python.org/moin/TimeComplexity#dict –

+0

Tbh我從來沒有聽說過字典的數據結構。但通過字典運行並檢查所有與我正在比較的元素相同的元素不能在log(n)下完成,可以嗎?所以我仍然需要n * log(n)。 –

相關問題