আমাদের কাছে JavaScript-এ একটি নম্বরের অ্যারে আছে যেটিতে নম্বরগুলো আনসোর্টেড أور্ডারে রয়েছে। আমাদের কাজ হলো একটি ফাংশন লিখা যা এই নম্বরের অ্যারেটি গ্রহণ করবে এবং দুটি এলিমেন্টের একটি অ্যারে রিটার্ন করবে, যেটি হলো অ্যারেটির টপ দুটি এলিমেন্ট (সর্বোচ্চ দুটি এলিমেন্ট)।
আমাদের এটা এক পাসে করতে হবে অর্থাৎ লিনিয়ার টাইমে এক্সিকিউট করতে হবে যেনাম শুধু একটি ফর লুপ ব্যবহার করে অথবা ES6 ফাংশন ব্যবহার করলে শুধু একবার এবং একটিই ব্যবহার করতে হবে এবং নেস্টিং এড়িয়ে যেতে হবে যা টাইম কমপ্লেক্সিটি বাড়ায়।
তাহলে, এখন Array.prototype.reduce() মেথড ব্যবহার করে কোড লিখি:
উদাহরণ
const arr = [23, 65, 67, 23, 2, 6, 87, 23, 45, 65, 3, 234, 3]; const topTwo = arr => { if(arr.length < 2){ return false; }; return arr.reduce((acc, val) => { if(val > acc[0]){ let t = acc[0]; acc[0] = val; acc[1] = t; }else if(val > acc[1]){ acc[1] = val; }; return acc; }, [-Infinity, -Infinity]); }; console.log(topTwo(arr));আউটপুট
কনসোলে আউটপুট হবে:
[ 234, 87 ]