কম্পিউটার

দুটি অ্যারে জাভাস্ক্রিপ্টের ছেদ


আমাদের সংখ্যার দুটি অ্যারে আছে, এবং আমাদের একটি ফাংশন লিখতে হবে, বলুন intersection() যেটি তাদের ছেদকে গণনা করে এবং একটি অ্যারে প্রদান করে যা যেকোনো ক্রমে ছেদকারী উপাদান ধারণ করে। ফলাফলের প্রতিটি উপাদান উভয় অ্যারেতে যতবার দেখায় ততবার উপস্থিত হওয়া উচিত।

উদাহরণস্বরূপ - যদি,

Input: arr1 = [1,2,3,1], arr2 = [1,3,1]
Output: [1,3,1]

পন্থা

অ্যারেগুলি সাজানো থাকলে, আমরা দুটি পয়েন্টার পদ্ধতি ব্যবহার করতে পারতাম প্রাথমিকভাবে সংশ্লিষ্ট অ্যারের শুরুতে 0 তে উভয় পয়েন্টার করে এবং আমরা সংশ্লিষ্ট পয়েন্টারটি বাড়ানোর সাথে এগিয়ে যেতে পারতাম এবং এটি O(m+n) জটিল w.r.t. সময় যেখানে m এবং n অ্যারের মাপ।

কিন্তু যেহেতু আমাদের কাছে বিন্যাসিত অ্যারে রয়েছে তাই অ্যারেগুলিকে সাজানোর এবং তারপরে এই অ্যাপ্রোচ ব্যবহার করার কোনও যুক্তি নেই, আমরা দ্বিতীয়টির বিপরীতে প্রথমটির প্রতিটি মান পরীক্ষা করব এবং একটি ছেদবিশিষ্ট বিন্যাস তৈরি করব। এতে আমাদের O(n^2) সময় ব্যয় হবে।

এবং এটি করার জন্য কোড হবে −

উদাহরণ

const arr1 = [1, 2, 43, 5, 3, 7, 7,8, 4, 2];
const arr2 = [1, 1, 6, 6, 2, 78, 7, 2, 3, 7, 23, 5, 3];
const intersection = (arr1, arr2) => {
   const res = [];
   const { length: len1 } = arr1;
   const { length: len2 } = arr2;
   const smaller = (len1 < len2 ? arr1 : arr2).slice();
   const bigger = (len1 >= len2 ? arr1 : arr2).slice();
   for(let i = 0; i < smaller.length; i++){
      if(bigger.indexOf(smaller[i]) !== -1){
         res.push(smaller[i]);
         bigger.splice(bigger.indexOf(smaller[i]), 1, undefined);
      }
   };
   return res;
};
console.log(intersection(arr1 ,arr2));

আউটপুট

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

[1, 2, 5, 3, 7, 7, 2]

  1. জাভাস্ক্রিপ্টে তিনটি সাজানো অ্যারের ছেদ

  2. জাভাস্ক্রিপ্টে ব্যবধানের অ্যারেগুলির ছেদ খুঁজে বের করা

  3. C# এ দুটি অ্যারের ছেদ

  4. পাইথনে দুটি অ্যারে II এর ছেদ