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

জাভাস্ক্রিপ্টে লিংকড লিস্টে প্রতিটি নোডের জন্য পরবর্তী বড় মান খুঁজে বের করা


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা লিংকড লিস্টের হেড নেবে। এই লিস্টে সংখ্যাসূচক ডেটা থাকে। লিস্টের প্রতিটি নোডের একটি পরবর্তী বড় মান থাকতে পারে: 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 ]
  1. জাভাস্ক্রিপ্ট – Hello World

  2. জাভাস্ক্রিপ্টে নোড

  3. জাভাস্ক্রিপ্টে বাইনারি ট্রি

  4. জাভাস্ক্রিপ্টে প্রতিটি অবজেক্টের জন্য ইউনিক আইডি তৈরি করা