Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Delete Node at Specific Position in DSA Typescript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Delete Node at Specific Position
O(n)
Understanding Time Complexity

We want to know how long it takes to remove a node from a list at a certain spot.

How does the time needed change when the list gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


function deleteNode(head: ListNode | null, position: number): ListNode | null {
  if (!head) return null;
  if (position === 0) return head.next;
  let current = head;
  for (let i = 0; i < position - 1; i++) {
    if (!current.next) return head;
    current = current.next;
  }
  if (current.next) current.next = current.next.next;
  return head;
}
    

This code removes the node at the given position from a linked list.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The for-loop that moves through the list nodes.
  • How many times: Up to position - 1 times, depending on where the node is.
How Execution Grows With Input

As the list gets longer, the time to reach the position grows roughly the same as the position number.

Input Size (n)Approx. Operations
10Up to 9 steps to reach the node
100Up to 99 steps to reach the node
1000Up to 999 steps to reach the node

Pattern observation: The time grows linearly with the position in the list.

Final Time Complexity

Time Complexity: O(n)

This means the time to delete a node grows in direct proportion to the position of the node.

Common Mistake

[X] Wrong: "Deleting a node always takes the same time no matter where it is."

[OK] Correct: You must first find the node, which takes longer if it is farther in the list.

Interview Connect

Understanding how time grows with list size helps you explain your code clearly and shows you know how data structures work.

Self-Check

"What if we had a pointer directly to the node before the one to delete? How would the time complexity change?"

Practice

(1/5)
1. What does deleting a node at a specific position in a singly linked list mean?
easy
A. Removing the node located at that position and linking its previous node to the next node
B. Adding a new node at that position
C. Swapping the node at that position with the last node
D. Counting the total nodes in the list

Solution

  1. Step 1: Understand node deletion in linked list

    Deleting a node means removing it and connecting the previous node to the next node to keep the list intact.
  2. Step 2: Apply to specific position

    At a specific position, we find the node before it and change its next pointer to skip the node to delete.
  3. Final Answer:

    Removing the node located at that position and linking its previous node to the next node -> Option A
  4. Quick Check:

    Delete node = remove and link neighbors [OK]
Hint: Delete means remove and link neighbors, not add or swap [OK]
Common Mistakes:
  • Thinking deletion adds a node
  • Confusing deletion with swapping nodes
  • Ignoring the need to link previous and next nodes
2. Which of the following TypeScript code snippets correctly deletes a node at position pos in a singly linked list starting with head?
easy
A. if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i < pos - 1; i++) temp = temp.next; temp.next = temp.next.next; }
B. if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i < pos; i++) temp = temp.next; temp.next = temp.next.next; }
C. if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i <= pos; i++) temp = temp.next; temp.next = temp.next.next; }
D. if (pos === 0) head = head.next; else { let temp = head; for (let i = 1; i <= pos; i++) temp = temp.next; temp.next = temp.next.next; }

Solution

  1. Step 1: Handle deletion at head (position 0)

    If position is 0, simply move head to next node to delete the first node.
  2. Step 2: Traverse to node before position

    Loop from 0 to pos-1 to reach node before the one to delete, then link its next to next.next.
  3. Final Answer:

    if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i < pos - 1; i++) temp = temp.next; temp.next = temp.next.next; } -> Option A
  4. Quick Check:

    Loop to pos-1, then skip node [OK]
Hint: Loop to pos-1 to delete node at pos [OK]
Common Mistakes:
  • Looping to pos instead of pos-1
  • Not handling deletion at head correctly
  • Accessing temp.next.next when temp.next is null
3. Given the linked list: 10 -> 20 -> 30 -> 40 -> 50 -> null and the code below, what will be the list after deleting the node at position 2?
let head = { val: 10, next: { val: 20, next: { val: 30, next: { val: 40, next: { val: 50, next: null } } } } };
let pos = 2;
if (pos === 0) head = head.next;
else {
  let temp = head;
  for (let i = 0; i < pos - 1; i++) temp = temp.next;
  temp.next = temp.next.next;
}
medium
A. 10 -> 30 -> 40 -> 50 -> null
B. 10 -> 20 -> 30 -> 40 -> 50 -> null
C. 10 -> 20 -> 40 -> 50 -> null
D. 20 -> 30 -> 40 -> 50 -> null

Solution

  1. Step 1: Identify node at position 2

    Position 2 node has value 30 (0-based indexing: 10 at 0, 20 at 1, 30 at 2).
  2. Step 2: Delete node at position 2

    Traverse to node at position 1 (value 20), then set its next to node at position 3 (value 40), skipping 30.
  3. Final Answer:

    10 -> 20 -> 40 -> 50 -> null -> Option C
  4. Quick Check:

    Node 30 removed, neighbors linked [OK]
Hint: Skip node at pos by linking previous to next.next [OK]
Common Mistakes:
  • Deleting wrong node due to off-by-one error
  • Not updating links properly
  • Confusing position indexing
4. The following TypeScript code attempts to delete a node at position pos in a singly linked list but causes a runtime error. What is the error?
function deleteNode(head: Node | null, pos: number): Node | null {
  if (pos === 0) return head.next;
  let temp = head;
  for (let i = 0; i < pos; i++) {
    temp = temp.next!;
  }
  temp.next = temp.next!.next;
  return head;
}
medium
A. Incorrect loop range causes skipping the wrong node
B. Accessing temp.next when temp is null causes runtime error
C. Missing check for empty list before deletion
D. Returning head.next instead of head after deletion

Solution

  1. Step 1: Analyze loop traversal

    The loop runs from 0 to pos, moving temp forward pos times, which can make temp null if pos >= list length.
  2. Step 2: Identify null access

    After loop, temp may be null, so accessing temp.next causes runtime error.
  3. Final Answer:

    Accessing temp.next when temp is null causes runtime error -> Option B
  4. Quick Check:

    Loop overshoots, temp becomes null, then temp.next fails [OK]
Hint: Loop to pos-1, not pos, to avoid null access [OK]
Common Mistakes:
  • Looping too far causing null pointer
  • Not checking for empty list
  • Misunderstanding return value after deletion
5. You have a singly linked list representing a playlist: Song1 -> Song2 -> Song3 -> Song4 -> Song5 -> null. You want to delete the 4th song (position 3). After deletion, you want to insert a new song Song6 at the same position. Which sequence of operations correctly achieves this?
hard
A. Delete node at position 3, then insert new node at head
B. Delete node at position 3, then traverse to position 3 and insert new node after it
C. Delete node at position 2, then traverse to position 3 and insert new node after it
D. Delete node at position 3, then traverse to position 2 and insert new node after it

Solution

  1. Step 1: Delete node at position 3

    Remove the node at position 3 (Song4) by linking node at position 2 to node at position 4.
  2. Step 2: Insert new node at position 3

    Traverse to position 2, then insert new node after it to place Song6 at position 3.
  3. Final Answer:

    Delete node at position 3, then traverse to position 2 and insert new node after it -> Option D
  4. Quick Check:

    Delete at pos 3, insert after pos 2 = new pos 3 [OK]
Hint: Insert after pos-1 to place new node at pos [OK]
Common Mistakes:
  • Inserting at wrong position after deletion
  • Deleting wrong node position
  • Inserting at head instead of correct position
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard