আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে একটি সংখ্যার অ্যারে এবং দ্বিতীয় আর্গুমেন্ট হিসেবে একটি একক সংখ্যা গ্রহণ করবে। ফাংশনটি অ্যারেতে থেকে তিনটি এমন সংখ্যা বের করবে (যদি থাকে) যাদের যোগফল দ্বিতীয় আর্গুমেন্টে নির্দিষ্ট সংখ্যার সমান।
ফাংশনটি শেষে সকল такой ট্রিপলেট (triplet) ধারণকারী একটি অ্যারে অফ অ্যারে রিটার্ন করবে, যদি না থাকে তবে খালি অ্যারে।
উদাহরণস্বরূপ —
ইনপুট অ্যারে এবং সংখ্যা যদি হয় —
const arr = [2, 5, 7, 8, 9, 11, 1, 6]; const sum = 22;
তাহলে আউটপুট হবে —
const output = [ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ];
উদাহরণ
কোডটি নিচে দেওয়া হলো —
const arr = [2, 5, 7, 8, 9, 11, 1, 6]; const sum = 22;
const threeSum = (arr = [], sum) => {
arr.sort((a,b) => a - b);
const res = [];
for(let i=0; i < arr.length - 2; i++){
if(arr[i] != arr[i-1]){
let left = i + 1;
let right = arr.length - 1;
while (left < right){
const curr = arr[i] + arr[left] + arr[right];
if (curr === sum){
res.push([arr[i], arr[left], arr[right]]);
while(arr[left] == arr[left + 1]) left ++
while(arr[right] == arr[right - 1]) right -- // making sure
our solution set does not contain duplicate res
left ++;
right --;
} else if(curr < sum) {
left ++
} else if(curr > sum){
right --
};
}
};
};
return res
};
console.log(threeSum(arr, sum));
আউটপুট
কনসোল আউটপুট:
[ [ 2, 9, 11 ], [ 5, 6, 11 ], [ 5, 8, 9 ], [ 6, 7, 9 ] ]