কম্পিউটার টিউটোরিয়াল

সন্নিহিত উপাদান যুগল যেন যোগফল ০-এর নিকটতম - JavaScript

অ্যারেতে পাশাপাশি দুটি উপাদান যেন তাদের যোগফল ০-এর সবচেয়ে নিকট হয়, সেটি বের করা।

উদাহরণ

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]
  1. জাভাস্ক্রিপ্টে অ্যারে-এ এলিমেন্ট যোগ করে সমষ্টি বৈচিত্র্যময় করা

  2. জাভাস্ক্রিপ্টে অ্যারে এলিমেন্ট পুনর্বিন্যাস করা যেন কোনো দুটি সমান না থাকে

  3. জাভাস্ক্রিপ্টে অ্যারে এলিমেন্ট পুনর্বিন্যাস করে ডাবল রিলেশন তৈরি করা

  4. জাভাস্ক্রিপ্টে ২D অ্যারেতে অল্টারনেটিং সম (Alternating Sum) গণনা