অ্যারেতে পাশাপাশি দুটি উপাদান যেন তাদের যোগফল ০-এর সবচেয়ে নিকট হয়, সেটি বের করা।
উদাহরণ
arr = [4, 4, 12, 3, 3, 1, 5, -4, 2, 2] পাশাপাশি জোড়া: (4,4)=8, (4,12)=16, (12,3)=15, (3,3)=6, (3,1)=4, (1,5)=6, (5,-4)=1, (-4,2)=-2, (2,2)=4 ০-এর নিকটতম: 1 (যুগল: 5, -4)
সমাধান
const closestToZeroPair = (arr) => {
if (arr.length < 2) return arr;
let minDiff = Infinity;
let result = [arr[0], arr[1]];
for (let i = 0; i < arr.length - 1; i++) {
const sum = arr[i] + arr[i + 1];
const diff = Math.abs(sum);
if (diff < minDiff) {
minDiff = diff;
result = [arr[i], arr[i + 1]];
}
}
return result;
};
// reduce ব্যবহার করে
const closestToZeroReduce = (arr) => {
if (arr.length < 2) return arr;
return arr.slice(0, -1).reduce((best, curr, i) => {
const next = arr[i + 1];
const diff = Math.abs(curr + next);
return diff < best.diff ? { pair: [curr, next], diff } : best;
}, { pair: [arr[0], arr[1]], diff: Infinity }).pair;
};
// টেস্ট
const arr = [4, 4, 12, 3, 3, 1, 5, -4, 2, 2];
console.log(closestToZeroPair(arr)); // [5, -4]
console.log(closestToZeroReduce(arr)); // [5, -4]
ব্রুট ফোর্স vs অপ্টিমাইজড
- এডজাসেন্ট (পাশাপাশি): O(n) - লিনিয়ার স্ক্যান
- যেকোনো দুটি উপাদান: O(n log n) - সোর্ট + টু পয়েন্টার
উৎপাদন
[5, -4]