在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相同。

要解决此问题,我们将遵循以下步骤:

  • ans := 0

  • 对于L2中的每个req,请执行以下操作

    • i := req在L1中的索引

    • 从L1中删除第i个元素

    • ans := ans + i

  • 返回ans

让我们看一下以下实现以获得更好的理解:

更多Python相关文章,请阅读:Python 教程

示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程