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