Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình đếm số lần hoán đổi cần thiết để thay đổi danh sách này sang danh sách khác trong Python?

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