假设我们有两个数字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