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

জাভাস্ক্রিপ্টে অ্যারে থেকে n সংখ্যার সর্বোচ্চ গুণফল বের করা


সমস্যা বিবরণ

একটি নাম্বার অ্যারে এবং একটি সংখ্যা n দেওয়া আছে। অ্যারে থেকে n সংখ্যা বেছে নিয়ে সর্বোচ্চ গুণফল বের করতে হবে।

সমাধান

const getHighestProduct = (arr, num) => {
  let prod = 1;
  const sorter = (a, b) => a - b;
  arr.sort(sorter);
  
  if (num > arr.length || (num & 2 && arr[arr.length - 1] < 0)) {
    return;
  }
  
  if (num % 2) {
    prod = arr.pop();
    num--;
  }
  
  while (num) {
    prod *= arr[0] * arr[1] > arr[arr.length - 2] * arr[arr.length - 1]
      ? arr.shift() * arr.shift()
      : arr.pop() * arr.pop();
    num -= 2;
  }
  return prod;
};

console.log(getHighestProduct([1, 10, -5, 1, -100], 3)); // 5000
console.log(getHighestProduct([3, 4, 5, 6, 7], 3));       // 210
console.log(getHighestProduct([3, 4, -5, -6, -7], 3));    // 168

আউটপুট

5000 210 168

অ্যালগরিদম ব্যাখ্যা

  • অ্যারে সর্ট করা হয়।
  • যদি n বিজোড় হয়, সবচেয়ে বড় নম্বর (পপ) নিয়ে গুণ করা হয়।
  • বাকি জোড় সংখ্যক নম্বরের জন্য: সবচেয়ে ছোট দুটি (নেগেটিভ হলে গুণফল পজেটিভ হয়) এবং সবচেয়ে বড় দুটির গুণফল তুলনা করে বড়টাই নেওয়া হয়।
  1. জাভাস্ক্রিপ্টে তিনটি সংখ্যার সর্বোচ্চ গুণফল বের করা

  2. জাভাস্ক্রিপ্টে অ্যারেতে থেকে nটি সবচেয়ে ছোট সংখ্যা তাদের মূল ক্রমে বের করা

  3. জাভাস্ক্রিপ্টে reduce() ব্যবহার করে অ্যারে উপাদানগুলোর গুণফল বের করা

  4. জাভাস্ক্রিপ্টে সর্টেড অ্যারে থেকে আউট-অফ-অর্ডার এলিমেন্ট খুঁজে বের করা