Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

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

  • L2의 각 req에 대해 수행

    • i :=L1의 req 인덱스

    • L1에서 i번째 요소 삭제

    • as :=as + 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