Python程式:計算將一個列表轉換為另一個列表所需的交換次數?


假設我們有兩個數字列表 L1 和 L2,每個列表的長度為 n,每個值在其列表中都是唯一的,並且值在 1 到 n 的範圍內,我們需要找到將 L1 轉換為 L2 所需的最少相鄰交換次數。

因此,如果輸入類似於 L1 = [0, 1, 2, 3] L2 = [2, 0, 1, 3],則輸出將為 2,因為我們可以交換 1 和 2,L1 將變為 [0, 2, 1, 3],然後交換 0 和 2,L1 將變為 [2, 0, 1, 3],這與 L2 相同。

為了解決這個問題,我們將遵循以下步驟

  • ans := 0

  • 對於 L2 中的每個 req,執行以下操作

    • i := req 在 L1 中的索引

    • 從 L1 中刪除第 i 個元素

    • ans := ans + i

  • 返回 ans

讓我們看看以下實現以更好地理解

示例

 線上演示

class Solution:
   def solve(self, L1, L2):
      ans = 0
      for req in L2:
         i = L1.index(req)
         L1.pop(i)
         ans += i
      return ans

ob = Solution()
L1 = [0, 1, 2, 3]
L2 = [2, 0, 1, 3]
print(ob.solve(L1, L2))

輸入

[0, 1, 2, 3],[2, 0, 1, 3]

輸出

2

更新於: 2020年11月10日

354 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.