অ্যারেতে যেসব উপাদান তার ডান পাশের সব উপাদান চেয়ে বড়, সেগুলো বের করা।
উদাহরণ
[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 ]