我知道,set()
python沒有訂單,因爲它是作爲一個哈希表實現的。然而,我有點驚訝地解決了一個涉及使用set.intersection()
的命令的問題。令人驚訝的蟒蛇組合方法訂單
因此,我給出了兩個列表的順序,例如說,表示一些排名或發生順序。我必須找到兩個列表中共同的元素,並且在兩個列表中具有最高的順序(發生在第一個)。例如,
List1 = ['j','s','l','p','t']
List2 = ['b','d','q','s','y','j']
應該輸出's'
因爲它是在List1
第二好的並且發生在List2
第一個。
如果您將每個列表轉換爲集合並採用路口Set1.intersection(Set2)
,則會得到一組set(['s', 'j'])
。在我的情況下,我可以將其轉換爲列表並吐出第一個元素,這大約是O(n1 + n2)。
我很高興解決這個面試問題(所有測試都通過了),但我很驚訝,我怎麼能用python set
來解決這樣的訂單基礎問題。
有沒有人有線索如何工作?什麼是可能的情況,這可能會崩潰?
編輯:這似乎是一樣的運氣盒的行程,所以如果你有這個問題的很好的解決方案,這將是還讚賞
只是不依賴'set'的順序。它可以根據python的版本進行更改。 –
我同意它似乎是虛假的。我只是想知道在這種情況下它是如何工作的。什麼樣的測試用例可以分解我的代碼,這在自動化測試用例中並不出乎意料。 –
「它是如何工作」的答案是「運氣」。套裝無序的事實並不意味着他們永遠不會給你你想要的訂單。這意味着你永遠不知道他們會給你什麼樣的順序。 – BrenBarn