假设我们有两个数字列表,分别称为A和B。我们必须在A中取一些子列表并将其取反。然后检查是否可以将A变成B。我们可以选择子列表并将其反向任意次。
因此,如果输入像A = [2,3,4,9,10],B = [4,3,2,10,9],则输出将为True,因为我们可以反转[2,3, 4]和[9,10]。
为了解决这个问题,我们将遵循以下步骤-
res:=映射,最初是空的
对于每n个数字,执行
res [n]:= res [n] + 1
对于目标中的每个t
res [t]:= res [t]-1
当res值中的所有元素都等于0时,返回true。
让我们看下面的实现以更好地理解-
from collections import defaultdict class Solution: def solve(self, nums, target): res = defaultdict(int) for n in nums: res[n] += 1 for t in target: res[t] -= 1 return all(n == 0 for n in res.values()) ob = Solution()A = [2, 3, 4, 9, 10] B = [4, 3, 2, 10, 9] print(ob.solve(A, B))
[2, 3, 4, 9, 10], [4, 3, 2, 10, 9]
输出结果
True