สมมติว่าเรามีรายการตัวเลข 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