Giả sử chúng ta có hai danh sách các số L1 và L2, độ dài của mỗi danh sách là n và mỗi giá trị là duy nhất trong danh sách của nó và các giá trị nằm trong phạm vi từ 1 đến n, chúng ta phải tìm số lượng hoán đổi liền kề tối thiểu cần thiết để biến đổi L1 đến L2.
Vì vậy, nếu đầu vào là L1 =[0, 1, 2, 3] L2 =[2, 0, 1, 3], thì đầu ra sẽ là 2, vì chúng ta có thể hoán đổi 1 và 2, L1 sẽ là [0 , 2, 1, 3], và sau đó 0 và 2, L1 sẽ là [2, 0, 1, 3], điều này giống với L2.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau:
-
ans:=0
-
đối với mỗi yêu cầu trong L2, hãy thực hiện
-
i:=chỉ mục của yêu cầu trong L1
-
xóa phần tử thứ i khỏi L1
-
ans:=ans + i
-
-
trả lại ans
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn:
Ví dụ
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))
Đầu vào
[0, 1, 2, 3],[2, 0, 1, 3]
Đầu ra
2