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

ডান পাশের সব উপাদান চেয়ে বড় উপাদান বের করা - JavaScript

অ্যারেতে যেসব উপাদান তার ডান পাশের সব উপাদান চেয়ে বড়, সেগুলো বের করা।

উদাহরণ

[12, 45, 6, 4, 23, 23, 21, 1]
// 12: ডানে 45 আছে (12<45) ❌
// 45: ডানে সব ছোট ✓
// 6: ডানে 23 আছে ❌
// 4: ডানে 23,21 আছে ❌
// 23 (5th): ডানে 23,21,1 আছে - 23 চেয়ে বড় নাই ✓
// 23 (6th): ডানে 21,1 আছে ✓
// 21: ডানে 1 আছে ✓
// 1: ডানে কাউকেই নেই ✓

ফলাফল: [45, 23, 21, 1] (রিভার্স অর্ডারে)

সমাধান: reduceRight (সেরা)

const largerThanRight = (arr) => {
  return arr.reduceRight((acc, val) => {
    if (val > acc.max) {
      acc.max = val;
      acc.result.push(val);
    }
    return acc;
  }, { max: -Infinity, result: [] }).result;
};

// টেস্ট
const arr = [12, 45, 6, 4, 23, 23, 21, 1];
console.log(largerThanRight(arr)); // [1, 21, 23, 45] (রাইট-টু-লেফ্ট অর্ডার)

// সঠিক অর্ডারে (লেফ্ট-টু-রাইট)
const largerThanRightOrdered = (arr) => {
  const result = largerThanRight(arr);
  return result.reverse();
};

console.log(largerThanRightOrdered(arr)); // [45, 23, 21, 1]

অ্যাল্টারনেটিভ: লুপ (দ্রুত)

const largerThanRightLoop = (arr) => {
  const result = [];
  let maxSoFar = -Infinity;
  
  for (let i = arr.length - 1; i >= 0; i--) {
    if (arr[i] > maxSoFar) {
      maxSoFar = arr[i];
      result.push(arr[i]);
    }
  }
  
  return result.reverse();
};

অ্যাপ্লিকেশন

  • স্টক মার্কেট: "লিডার" শনাক্তকরণ
  • অ্যালগরিদমিক সমস্যা: "Leaders in an array"
  • ডেটা প্রসেসিং: সাফিক্স ম্যাক্সিমাম

উৎপাদন

[ 1, 21, 23, 45 ]
  1. জাভাস্ক্রিপ্টে প্যাস্কেলের ত্রিভুজের nth সারি উপাদান বের করা

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

  3. জাভাস্ক্রিপ্টে অ্যারেতে প্রথম নন-কনsekutিভ নম্বর খুঁজে বের করা

  4. জাভাস্ক্রিপ্টে তিনটি অ্যারেতে সাধারণ সব উপাদানের যোগফল বের করা