สมมติว่าเรามีรายการตัวเลขสองรายการคือ nums1 และ nums2 มีองค์ประกอบบางอย่างที่ไม่จำเป็นต้องมีลักษณะเฉพาะ แต่สองรายการนี้แทนการเรียงสับเปลี่ยนของตัวเลขชุดเดียวกันที่ต่างกัน อย่างไรก็ตามบางส่วนของพวกเขาหายไป เราต้องหาตัวเลขที่หายไปของสองรายการนี้และพิมพ์ออกมาทั้งหมด
ดังนั้น หากอินพุตมีค่าเท่ากับ nums1 =[4,5,8,8,6,9] nums2 =[3,4,4,8,8,8,6,9,5,8] ผลลัพธ์จะเป็น เป็น [3,4,8,8] เพราะเราจะเห็นว่า 3 ไม่มีอยู่ใน nums1 แต่อยู่ใน nums2 ดังนั้นจึงขาดหายไป มี 4 อยู่ในทั้งคู่ แต่ใน nums2 มี 4s สองตัว แต่ใน nums1 มีเพียงตัวเดียว ดังนั้น 4 ตัวจึงหายไป ในทำนองเดียวกัน nums2 มี 8s สี่ตัว แต่ใน nums1 มีเพียง 2 เท่านั้น ดังนั้นจึงไม่มี 2 รายการ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- c1 :=รายการที่มีความถี่ของแต่ละองค์ประกอบที่มีอยู่ใน nums1
- c2 :=รายการที่มีความถี่ของแต่ละองค์ประกอบที่มีอยู่ใน nums2
- all_nums :=ชุดที่มีตัวเลขที่แตกต่างกันทั้งหมดจาก nums1 และ nums2
- res :=รายการใหม่
- สำหรับแต่ละ n ใน all_nums ทำ
- ถ้าไม่ใช่ใน c1 แล้ว
- ใส่ n, c2[n] ครั้งลงใน res
- มิฉะนั้นเมื่อ n ไม่อยู่ใน c2 แล้ว
- ใส่ n, c1[n] ครั้งลงใน res
- มิฉะนั้น
- ถ้า c1[n] ไม่เหมือนกับ c2[n] แล้ว
- ใส่ n, |c1[n]- c2[n]| ครั้งเป็นความละเอียด
- ถ้า c1[n] ไม่เหมือนกับ c2[n] แล้ว
- ถ้าไม่ใช่ใน c1 แล้ว
- ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from collections import Counter def solve(nums1, nums2): c1 = Counter(nums1) c2 = Counter(nums2) all_nums = set(nums1) | set(nums2) res = [] for n in all_nums: if n not in c1: res = res + [n]*c2[n] elif n not in c2: res = res + [n]*c1[n] else: if c1[n] != c2[n]: res = res + [n]*abs(c1[n]- c2[n]) return res nums1 = [4,5,8,8,6,9] nums2 = [3,4,4,8,8,8,6,9,5,8] print(solve(nums1, nums2))
อินพุต
[4,5,8,8,6,9], [3,4,4,8,8,8,6,9,5,8]
ผลลัพธ์
[3, 4, 8, 8]