Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับจำนวน swap ที่จำเป็นในการเปลี่ยนรายการเป็นรายการอื่นใน 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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • ตอบ :=0

  • สำหรับแต่ละ req ใน L2 ให้ทำ

    • i :=ดัชนีของ req ใน L1

    • ลบองค์ประกอบ ith ออกจาก L1

    • ans :=ans + i

  • กลับมาอีกครั้ง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:

ตัวอย่าง

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