মূল কনটেন্টে যান
🧩
লোকাল DSA
প্যাটার্নটপিক 3 · Linked Lists

3.2 Dummy Node Technique

চিনবেন কীভাবে
head বদলাতে পারে এমন insert/delete/merge — dummy বানিয়ে dummy.next রিটার্ন করলে head-এর special case উধাও
Demo · approach · কোড — আগে নিজে চেষ্টা, আটকালে খুলুন

Demo: Merge Two Sorted ListsLC 21 (Easy — Amazon/Meta/Google High)

Statement (Demo): দুটো sorted linked list list1list2-এর head দেওয়া — দুটোকে একটা sorted linked list-এ merge করে তার head return করুন। উদাহরণ: list1=[1,2,4], list2=[1,3,4][1,1,2,3,4,4] | ⚡ n,m ≤ 50

Approach: dummy থেকে tail চালান; দুই লিস্টের ছোট নোডটা tail-এ জুড়ুন। একটা শেষ হলে অন্যটার বাকি অংশ সরাসরি জুড়ে দিন।

function mergeTwoLists(a, b) {
  const dummy = { next: null };
  let tail = dummy;
  while (a && b) {
    if (a.val <= b.val) {
      tail.next = a;
      a = a.next;
    } else {
      tail.next = b;
      b = b.next;
    }
    tail = tail.next;
  }
  tail.next = a || b;
  return dummy.next;
}

Complexity: Time O(m+n), Space O(1)

প্রবলেম

  • (recursion দিয়েও সুন্দর হয়)

    Statement: linked list-এর head দেওয়া — প্রতি দুটো node swap করুন (node-এর value নয়, pointer change করুন)।
    উদাহরণ: [1,2,3,4][2,1,4,3] | ⚡ n ≤ 100

    নোট · ফাঁকা