在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