কম্পিউটার

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


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি একক সংখ্যার দুটি অ্যারে নেয় যা দুটি সংখ্যা, arr1 এবং arr2 প্রথম এবং দ্বিতীয় আর্গুমেন্ট হিসাবে উপস্থাপন করে। ফাংশনের তৃতীয় আর্গুমেন্ট হবে একটি সংখ্যা,

num (num <= length of arr1 + length of arr2)

আমাদের ফাংশনটি দৈর্ঘ্যের সংখ্যার একক সংখ্যার একটি নতুন অ্যারে প্রদান করবে, যা নিজেই একটি সংখ্যাকে প্রতিনিধিত্ব করে। এবং সংখ্যাটি হওয়া উচিত সর্বাধিক সংখ্যা যা আমরা উভয় অ্যারে থেকে উপাদান ব্যবহার করে তৈরি করতে পারি, আমাদের জন্য একমাত্র শর্ত হল আমাদের একই অ্যারে থেকে উপাদানগুলির আপেক্ষিক ক্রম সংরক্ষণ করতে হবে৷

উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −

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));

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

আমরা যে পদক্ষেপগুলি নিয়েছি তা হল −

  • অবশিষ্ট সংখ্যা অনুমোদিত না হওয়া পর্যন্ত লুপের জন্য ব্যবহৃত হয়৷

  • যদি arr1 এর arr2 এর চেয়ে বেশি নম্বর থাকে, আমরা প্রথমে arr1 নম্বর ব্যবহার করতাম, অন্যথায় আমরা arr2number ব্যবহার করতাম।

  • যখন ফর-লুপ অনুমোদিত না হওয়া পর্যন্ত arr1 এবং arr2 একই সংখ্যা ছিল, আমরা দুটি মান তুলনা করার জন্য শুধুমাত্র পুনরাবৃত্তি ব্যবহার করেছি এবং বড় সংখ্যা বেছে নিয়েছি।

আউটপুট

এবং কনসোলে আউটপুট হবে −

[ 9, 8, 6, 3 ]

  1. জাভাস্ক্রিপ্টে ক্ষুদ্রতম যোগফল সহ অ্যারে থেকে বেশ কয়েকটি জোড়া খুঁজে বের করা

  2. জাভাস্ক্রিপ্টে m থেকে n-এ পৌঁছানোর জন্য প্রয়োজনীয় ক্রিয়াকলাপের ন্যূনতম সংখ্যা খুঁজে বের করা

  3. জাভাস্ক্রিপ্টে আক্ষরিক দুটি অ্যারের মধ্যে অনুপস্থিত সংখ্যা খুঁজে বের করা

  4. জাভাস্ক্রিপ্টে দুটি অ্যারে থেকে স্ট্রিংগুলির দৈর্ঘ্যের সর্বাধিক পরম পার্থক্য