用 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

