সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা লিংকড লিস্টের হেড নেবে। এই লিস্টে সংখ্যাসূচক ডেটা থাকে। লিস্টের প্রতিটি নোডের একটি পরবর্তী বড় মান থাকতে পারে: node_i-এর জন্য next_larger(node_i) হল node_j.val যেন j > i, node_j.val > node_i.val, এবং j যেন সর্বনিম্ন হয়। যদি এমন j না থাকে, তবে পরবর্তী বড় মান ০।
ফাংশনটি একটি অ্যারে তৈরি করে রিটার্ন করবে যেখানে প্রতিটি এলিমেন্ট লিস্টের সংশ্লিষ্ট এলিমেন্টের জন্য পরবর্তী বড় এলিমেন্ট হবে।
উদাহরণস্বরূপ, লিস্ট যদি থাকে –

তবে আউটপুট হবে –
const output = [7, 0, 5, 5, 0];
আউটপুট ব্যাখ্যা:
কারণ ২-এর পরবর্তী বড় ৭, ৭-এর জন্য কোনো বড় মান নেই ইত্যাদি।
উদাহরণ
কোডটি নিচের মতো –
class Node{ constructor(data){ this.data = data; this.next = null; }; }; class LinkedList{ constructor(){ this.head = null; this.size = 0; }; }; LinkedList.prototype.add = function(data){ const newNode = new Node(data); let curr if(this.head === null){ this.head = newNode; }else{ curr = this.head; while (curr.next) { curr = curr.next; } curr.next = newNode; }; this.size++; }; const list = new LinkedList(); list.add(2); list.add(7); list.add(4); list.add(3); list.add(5); const nextGreater = (head) => { const arr = []; const res = []; let curr = head; let currentIndex = 0 while(curr){ while (arr.length > 0 && curr.data > arr[arr.length - 1][1]) { const [index] = arr.pop(); res[index] = curr.data; }; arr.push([currentIndex, curr.data]); currentIndex += 1; curr = curr.next; }; for(let i = 0; i < currentIndex; i++){ if(res[i] === undefined){ res[i] = 0; }; }; return res; }; console.log(nextGreater(list.head));আউটপুট
কনসোলে আউটপুট হবে –
[ 7, 0, 5, 5, 0 ]