কম্পিউটার

কিভাবে একটি অ্যারেতে তিনটি উপাদানের একটি গ্রুপ খুঁজে বের করা যায় যার সমষ্টি কিছু লক্ষ্য সমষ্টি জাভাস্ক্রিপ্টের সমান


আমাদের একটি ফাংশন লিখতে হবে, বলুন threeSum() যেটি সংখ্যার অ্যারে এবং একটি টার্গেটসাম নেয়। এটা পরীক্ষা করে যে অ্যারেতে কোনো তিনটি সংখ্যা আছে কি না যা লক্ষ্য যোগফল যোগ করে, যদি অ্যারেতে এই ধরনের তিনটি সংখ্যা থাকে, তাহলে এটি তাদের সূচকগুলি অ্যারেতে ফিরিয়ে দেবে অন্যথায় এটি -1 ফেরত দেবে।

পন্থা

পদ্ধতিটি সহজ, আমরা প্রথমে একটি ফাংশন twoSum() লিখব, যা একটি অ্যারে এবং অ্যাটার্গেট যোগফল নেয় এবং দুটি সংখ্যার সূচকগুলি ফেরত দিতে রৈখিক সময় এবং স্থান নেয় যা অন্যথায় -1 যোগ করে।

তারপরে আমরা প্রকৃত ফাংশন threeSum() লিখি, যেটি তৃতীয় উপাদানের সূচী খুঁজে বের করতে অ্যারের প্রতিটি উপাদানের উপর পুনরাবৃত্তি করে যা twoSum() সংখ্যার সাথে যোগ করা হলে প্রকৃত লক্ষ্য পর্যন্ত যোগ হতে পারে।

অতএব, এভাবে আমরা O(N^2) সময়ে তিনটি উপাদান খুঁজে পেতে পারি। এর জন্য কোড লিখি -

উদাহরণ

const arr = [1,2,3,4,5,6,7,8];
const twoSum = (arr, sum) => {
   const map = {};
   for(let i = 0; i < arr.length; i++){
      if(map[sum-arr[i]]){
         return [map[sum-arr[i]], i];
      };
      map[arr[i]] = i;
   };
   return -1;
};
const threeSum = (arr, sum) => {
   for(let i = 0; i < arr.length; i++){
      const indices = twoSum(arr, sum-arr[i]);
      if(indices !== -1 && !indices.includes(i)){
         return [i, ...indices];
      };
   };
   return -1;
};
console.log(threeSum(arr, 9));
console.log(threeSum(arr, 8));
console.log(threeSum(arr, 13));
console.log(threeSum(arr, 23));

আউটপুট

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

[ 0, 2, 4 ]
[ 0, 2, 3 ]
[ 0, 4, 6 ]
-1

  1. আমি কিভাবে জাভাস্ক্রিপ্টে একটি অ্যারে খালি করব?

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

  3. জাভাস্ক্রিপ্টে অ্যারের বিকল্প উপাদানের যোগফল খুঁজে বের করা

  4. জাভাস্ক্রিপ্টে একটি অ্যারেতে প্রয়োজনীয় যোগফল সহ তিনটি উপাদান খুঁজে বের করা