কম্পিউটার

জাভাস্ক্রিপ্টের যোগফল K সহ মোট সাবয়ারে


আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসাবে সংখ্যার অ্যারে এবং দ্বিতীয় আর্গুমেন্ট হিসাবে একটি একক সংখ্যা নেয়। ফাংশনটি অবিচ্ছিন্ন সাবয়ারের মোট সংখ্যার গণনা খুঁজে বের করতে হবে এবং ফেরত দিতে হবে যার যোগফল দ্বিতীয় আর্গুমেন্ট দ্বারা নির্দিষ্ট করা সংখ্যার সমান।

এটা নিশ্চিত যে অ্যারের সমস্ত সংখ্যাই ধনাত্মক সংখ্যা৷

যেমন −

যদি ইনপুট −

হয়
const arr = [1, 1, 1];
const sum = 2;

তারপরে আউটপুট 2 হওয়া উচিত কারণ এই অ্যারেতে ঠিক দুটি সাব্যারে রয়েছে যার যোগফল 2।

আমরা স্লাইডিং উইন্ডো অ্যালগরিদম ব্যবহার করব যা পছন্দসই উইন্ডোগুলি (প্রয়োজনীয় যোগফল সহ সাবরে) খুঁজে পেতে এবং তাদের সংখ্যা গণনা করতে একটি দ্বি-পয়েন্টার পদ্ধতি ব্যবহার করে৷

উদাহরণ

const arr = [1, 2, 3, 4, 5];
const sum = 5;
// two pointer approach to find one matching subarray
const findOne = (arr, target, start = 0) => {
   let left = start, right = start, sum = 0;
   while(right < arr.length){
      sum += arr[right];
      if(sum === target){
         return true;
      }
      else if(sum < target){
         right++;
      }else{
         left++;
         sum -= left;
         if(left > right){
            right = left;
         };
      };
   };
   return false;
};
// iterating over the array to find all pair count const findAll = (arr = [], target) => {
   let count = 0;
   for(let i = 0; i < arr.length; i++){
      count += findOne(arr, target, i);
   };
   return count;
};
console.log(findAll(arr, sum));
console.log(findAll([1, 1, 1], 2));

আউটপুট

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

2
2

  1. উদাহরণ সহ JavaScript getPrototypeOf

  2. উদাহরণ সহ জাভাস্ক্রিপ্টে উত্তরাধিকার

  3. C++ এ জোড় যোগফল সহ সাবয়ারের সংখ্যা খুঁজুন

  4. C++ এর সমষ্টি সহ বাইনারি সাবাররে