কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে দুটি অ্যারে থেকে সর্বোচ্চ সংখ্যা তৈরি করা


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি একক অঙ্কের সংখ্যা অ্যারে (arr1, arr2) নেবে যা দুটি সংখ্যা রিপ্রেজেন্ট করে। তৃতীয় আর্গুমেন্ট হবে একটি সংখ্যা num (num ≤ arr1.length + arr2.length)।

ফাংশনটি num দৈর্ঘ্যের একটি নতুন একক অঙ্কের অ্যারে রিটার্ন করবে যা নিজে একটি সংখ্যা রিপ্রেজেন্ট করে। এই সংখ্যাটি দুটি অ্যারে-এর এলিমেন্ট ব্যবহার করে 만들 수 있는 সর্বোচ্চ সংখ্যা হবে, শর্তটি হল একই অ্যারে-এর এলিমেন্টগুলোর আপেক্ষিক ক্রম সংরক্ষণ করতে হবে।

উদাহরণস্বরূপ, ইনপুট যদি হয় –

const arr1 = [1, 3, 4, 5, 6]; const arr2 = [9, 1, 2, 5, 8, 3]; const num = 4;

তবে আউটপুট হবে –

const output = [9, 8, 6, 3];

উদাহরণ

কোডটি নিচের মতো –

const arr1 = [1, 3, 4, 5, 6]; const arr2 = [9, 1, 2, 5, 8, 3]; const num = 4; const maxArray = (arr1 = [], arr2 = [], num) => { const map = new Map(); const match = (a, b, num) => { if (map.has(a + ',' + b + ',' + num)) { return map.get(a + ',' + b + ',' + num); } let output = []; while(num > 0) { let maxa = -Infinity; let maxai = 0; let maxb = -Infinity; let maxbi = 0; for(let i = a; i < arr1.length && arr1.length + arr2.length - (i + b) >= num; i++) { if (arr1[i] > maxa) { maxa = arr1[i]; maxai = i; } } for(let i = b; i < arr2.length && arr1.length + arr2.length - (a + i) >= num; i++) { if (arr2[i] > maxb) { maxb = arr2[i]; maxbi = i; } } if (maxa === maxb) { output.push(maxa); let ca = map.get(a+','+(maxbi+1)+','+(num-1)) || match(a, maxbi+1, num-1); let cb = map.get((maxai+1)+','+b+','+(num-1)) || match(maxai+1,b,num-1); map.set(a+','+(maxbi+1)+','+(num-1), ca); map.set((maxai+1)+','+b+','+(num-1), cb); if (ca.join('') > cb.join('')) { return [...output, ...ca]; } else { return [...output, ...cb]; } } else if (maxa > maxb) { output.push(maxa); a = maxai + 1; } else { output.push(maxb); b = maxbi + 1; } num--; } map.set(a + ',' + b + ',' + num, output); return output; } return match(0, 0, num); }; console.log(maxArray(arr1, arr2, num));

কোড ব্যাখ্যা:

ধাপগুলো হল –
• ফর-লুপ ব্যবহার করা হয়েছে যতক্ষণ num বাকি থাকে।
• arr1-এ arr2-তে বেশি বড় সংখ্যা থাকলে arr1-এর সংখ্যাটি আগে ব্যবহার করা হয়েছে।
• যখন arr1 ও arr2-এ একই সংখ্যা থাকে, রিকার্শন দিয়ে দুটি পথ তুলনা করে বড়টি বেছে নেওয়া হয়েছে।

আউটপুট

কনসোলে আউটপুট হবে –

[ 9, 8, 6, 3 ]
  1. জাভাস্ক্রিপ্টে দুটি অ্যারে থেকে সবচেয়ে ছোট সমষ্টি वाले জোড়া খুঁজে বের করা

  2. জাভাস্ক্রিপ্টে m থেকে n পৌঁছানোর ন্যূনতম অপারেশন গণনা

  3. জাভাস্ক্রিপ্টে দুটি অ্যারেতে অনুপস্থিত একক সংখ্যা বের করা

  4. জাভাস্ক্রিপ্টে দুটি স্ট্রিং অ্যারেতে দৈর্ঘ্যের পার্থক্যের সর্বোচ্চ মান