ধরুন আমাদের কাছে সংখ্যার দুটি তালিকা আছে যা বলে nums1 এবং nums2। অগত্যা অনন্য কিছু উপাদান আছে. কিন্তু এই দুটি তালিকা প্রকৃতপক্ষে সংখ্যার একই সেটের বিভিন্ন স্থানান্তরকে প্রতিনিধিত্ব করছে। তবে তাদের মধ্যে কয়েকজন নিখোঁজ রয়েছে। আমাদের এই দুটি তালিকার অনুপস্থিত নম্বরগুলি খুঁজে বের করতে হবে এবং সেগুলিকে মুদ্রণ করতে হবে৷
সুতরাং, ইনপুট যদি nums1 =[4,5,8,8,6,9] nums2 =[3,4,4,8,8,8,6,9,5,8] এর মত হয়, তাহলে আউটপুট হবে be [3,4,8,8] কারণ আমরা দেখতে পাচ্ছি 3 সংখ্যা 1 এ উপস্থিত নয়, তবে এটি সংখ্যা 2 এ রয়েছে, তাই এটি অনুপস্থিত। 4 উভয়েই আছে কিন্তু সংখ্যা 2 তে দুটি 4 আছে কিন্তু সংখ্যা 1 এ একটি মাত্র, তাই একটি 4 অনুপস্থিত। একইভাবে nums2-এ চারটি 8s আছে, কিন্তু nums1 এ মাত্র 2 আছে, তাই দুটি অনুপস্থিত।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- c1 :=সংখ্যা1 এ উপস্থিত প্রতিটি উপাদানের ফ্রিকোয়েন্সি ধারণকারী একটি তালিকা
- c2 :=সংখ্যা2 এ উপস্থিত প্রতিটি উপাদানের ফ্রিকোয়েন্সি ধারণকারী একটি তালিকা
- all_nums :=nums1 এবং nums2 থেকে সমস্ত স্বতন্ত্র সংখ্যা সম্বলিত একটি সেট
- res :=একটি নতুন তালিকা
- সমস্ত_সংখ্যার প্রতিটি n-এর জন্য, করুন
- যদি n c1 তে না থাকে, তাহলে
- res-এ n, c2[n] বার ঢোকান
- অন্যথায় যখন n c2 তে না থাকে, তারপর
- res-এ n, c1[n] বার ঢোকান
- অন্যথায়,
- যদি c1[n] c2[n] এর মত না হয়, তাহলে
- ঢোকান 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]