用 Python 编写程序来计算将一个列表更改为另一个列表所需的交换次数?

pythonserver side programmingprogramming更新于 2026/2/16 5:32:17

假设我们有两个数字列表 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 中的每个请求,执行

    • i := L1 中请求的索引

    • 从 L1 中删除第 i 个元素

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

相关文章


有用资源