সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যেটি পূর্ণসংখ্যার একটি অ্যারে নেয়, প্রথম আর্গুমেন্ট হিসাবে এবং একটি একক পূর্ণসংখ্যা, লক্ষ্য দ্বিতীয় এবং প্রথম আর্গুমেন্ট হিসাবে। আমাদের ফাংশনটি পরীক্ষা করা উচিত যে অন্তত 2 আকারের একটি অবিচ্ছিন্ন সাব্যারে আছে কিনা যা k এর গুণিতক পর্যন্ত যোগ করে, অর্থাৎ, n*k পর্যন্ত যোগফল যেখানে n যেকোনো পূর্ণসংখ্যা হতে পারে।
যদি এটি বিদ্যমান থাকে তবে আমরা সত্য ফেরত দিই, অন্যথায় মিথ্যা।
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
const arr = [23, 2, 6, 4, 7]; const target = 6;
তারপর আউটপুট −
হওয়া উচিতconst output = true;
আউটপুট ব্যাখ্যা:
কারণ [23, 2, 6, 4, 7] আকার 5 এবং যোগফল 42 পর্যন্ত একটি অবিচ্ছিন্ন সাব্যারে।
উদাহরণ
এর জন্য কোড হবে −
const arr = [23, 2, 6, 4, 7]; const target = 6; const checkSubarraySum = (arr = [], target = 1) => { let sum = 0 const hash = {} hash[0] = -1; for (let i = 0; i<arr.length; i++) { sum += arr[i] if (target!=0) sum %= target if ( hash[sum] !== undefined ) { if(i-hash[sum]>1) return true } else { hash[sum] = i } }; return false; }; console.log(checkSubarraySum(arr, target));
আউটপুট
এবং কনসোলে আউটপুট হবে −
true