程序计数在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,1,3],然后0和2,L1将是[2,0,1,3],这与L2相同。

为了解决这个问题,我们将按照以下步骤操作:

  • 回答:= 0

  • 对于L2中的每个要求,执行

    • i:= L1中的需求索引

    • 从L1删除第i个元素

    • 回答:=回答+我

  • 返回ans

让我们看下面的实现以更好地理解:

示例

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
猜你喜欢