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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP