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 := 一個對映,最初為空
  • 對於 nums 中的每個 n,執行以下操作:
    • res[n] := res[n] + 1
  • 對於 target 中的每個 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

更新於: 2020年10月7日

163 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.