Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบว่าเรากลับรายการย่อยของรายการเดียวเพื่อสร้างรายการที่สองหรือไม่ใน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 เป็น nums ทำ
    • res[n] :=res[n] + 1
  • สำหรับแต่ละ t ในเป้าหมาย ทำ
    • res[t] :=res[t] - 1
  • คืนค่า จริง เมื่อองค์ประกอบทั้งหมดในค่า res เท่ากับ 0

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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