สมมติว่าเรามีรายการตัวเลขสองรายการที่เรียกว่า 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