我有一個實踐的問題,其中,輸入5個整數元組列表,並且輸出類似的記錄數。例如,在[(1,2,3,4,5),(2,3,4,5,1),(1,3,2,4,5)]中,輸出將是2.
儘管你不應該使用字典,但它來自CLRS,所以你打算使用散列表的概念。
我試過到目前爲止:
一些僞代碼下面我寫道:
它經過列表中的每個指標,比較所有其它指數和旋轉它。
我意識到這是錯誤的,它會運行在O(5n^2),這對於一本關於算法的書來說太高效了。任何建議,我可以做什麼來做到這一點沒有使用字典?
def leftShift(tup, n):
if not tup or not n:
return tup
n %= len(tup)
return tup[n:] + tup[:n]
i = 0
t = 0
rotateTuple(L):
while i < len(L):
if L[i][i] in L[i+1]:
while t < 4:
.... //This is when I noticed it would fail
的輸出取決於列表中的獨特的元組的數量。元組是一個重複的元素,當它被$ n $旋轉時,它與列表中的另一個元組相同。
爲什麼輸出「2」?什麼描述相似性?哈希表在哪裏適合這個? –
@JonClements:我認爲他意味着平等。但是,[(1,2),(1,2),(2,3),(2,3),(2,3)]'的結果又是什麼? –
這將是2,因爲有兩個獨特的元組。 @JonClements我編輯了這篇文章。我應該使用哈希表的實現,但不是內置的Python字典。這是一個奇怪的限制,但哈希表將允許使用更少的資源進行更多的比較。 –