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

জাভাস্ক্রিপ্টে সব সম্ভাব্য অড লেন্থ সাবঅ্যারের সমষ্টি


সমস্যা বিবরণ

নাম্বার অ্যারে দেওয়া আছে। সব সম্ভাব্য অড (বিজোড়) লেন্থের কনটিগুয়াস সাবঅ্যারে বের করে তাদের টোটাল সমষ্টি রিটার্ন করতে হবে।

ইনপুট: [1, 2, 3, 4, 5]

অড লেন্থ সাবঅ্যারে: [1], [2], [3], [4], [5], [1,2,3], [2,3,4], [3,4,5], [1,2,3,4,5]

টোটাল সমষ্টি: ৫৭

সমাধান

const arr = [1, 2, 3, 4, 5];

const sumArray = (arr = []) => arr.reduce((a, b) => a + b);

const oddSum = (arr = []) => {
  let len = 1;
  let sum = 0;
  const { length } = arr;
  while (len <= length) {
    for (let i = 0; i + len <= length; i++) {
      sum += sumArray(arr.slice(i, i + len));
    }
    len += 2;
  }
  return sum;
};

console.log(oddSum(arr)); // 57

আউটপুট

57

অপ্টিমাইজড পদ্ধতি (O(n))

প্রতিটি এলিমেন্ট arr[i] কতবার অড-লেন্থ সাবঅ্যারেতে আসবে তা গণনা করা যায়: total = ((i+1) * (n-i) + 1) / 2 (অড কাউন্ট)।

  1. জাভাস্ক্রিপ্ট অ্যারেতে সব ইউনিক ভ্যালু বের করা

  2. জাভাস্ক্রিপ্টে জোড়া বানিয়ে সর্বোচ্চ সম্ভাব্য যোগফল

  3. জাভাস্ক্রিপ্টে অ্যারেতে মাউন্টেন সাবঅ্যারের সর্বোচ্চ দৈর্ঘ্য

  4. বিজোড় দৈর্ঘ্যের সাবঅ্যারেগুলোর যোগফল বের করা