मान लीजिए हमारे पास 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 हैं, इसलिए दो गायब हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- c1 := nums1 में मौजूद प्रत्येक एलिमेंट की फ्रीक्वेंसी वाली सूची
- c2 := nums2 में मौजूद प्रत्येक एलिमेंट की फ्रीक्वेंसी वाली सूची
- all_nums := nums1 और nums2 से सभी अलग-अलग नंबरों वाला सेट
- res := एक नई सूची
- all_nums में प्रत्येक n के लिए, करें
- यदि n, c1 में नहीं है, तो
- n को c2[n] बार res में डालें
- अन्यथा जब n, c2 में नहीं है, तो
- n को c1[n] बार res में डालें
- अन्यथा,
- यदि c1[n], c2[n] के समान नहीं है, तो
- n को |c1[n]- c2[n]| बार res में डालें
- यदि c1[n], c2[n] के समान नहीं है, तो
- यदि n, c1 में नहीं है, तो
- res लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
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]