程序检查是否在Python中将一个列表的子列表反转为第二个列表

假设我们有两个数字列表,分别称为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
猜你喜欢