Delete Node at Specific Position in DSA Javascript - Time & Space 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?
Analyze the time complexity of the following code snippet.
function deleteNode(head, position) {
if (position === 0) {
return head.next;
}
let current = head;
for (let i = 0; i < position - 1; i++) {
current = current.next;
}
current.next = current.next.next;
return head;
}
This code removes the node at the given position from a singly linked list.
- Primary operation: The for-loop that moves through the list nodes.
- How many times: It runs up to position - 1 times to reach the node before the one to delete.
As the list gets longer, the time to reach the position grows roughly in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Up to 9 steps |
| 100 | Up to 99 steps |
| 1000 | Up to 999 steps |
Pattern observation: The steps increase directly with the position number.
Time Complexity: O(n)
This means the time to delete a node grows linearly with the position in the list.
[X] Wrong: "Deleting a node at any position always takes the same time."
[OK] Correct: Because you must first reach the node before the one to delete, which takes longer if the position is farther in the list.
Understanding how list traversal affects time helps you explain and write efficient code for linked list operations.
"What if we had a doubly linked list? How would the time complexity change when deleting a node at a specific position?"
Practice
Solution
Step 1: Understand position 0 in linked list
Position 0 refers to the first node, also called the head.Step 2: Effect of deleting head node
Deleting the head means moving the head pointer to the next node, removing the first node from the list.Final Answer:
The head pointer moves to the next node, effectively removing the first node. -> Option AQuick Check:
Deleting position 0 removes the first node [OK]
- Thinking the last node is deleted instead
- Assuming the list becomes empty always
- Deleting the wrong node position
pos in a singly linked list in JavaScript?Solution
Step 1: Check deletion at position 0
Deleting at position 0 means moving head to head.next.Step 2: Validate syntax correctness
if (pos === 0) head = head.next; correctly assigns head to head.next. Other options misuse syntax or do not delete the node properly.Final Answer:
if (pos === 0) head = head.next; -> Option BQuick Check:
Correct syntax for deleting head node is head = head.next [OK]
- Using delete keyword incorrectly on linked list nodes
- Assigning head.next to null without updating head
- Accessing nodes with array-like syntax
Solution
Step 1: Identify node at position 2
Positions start at 0, so position 2 is the third node with value 30.Step 2: Delete node at position 2
Remove node 30 by linking node 20's next to node 40.Final Answer:
10 -> 20 -> 40 -> null -> Option DQuick Check:
Deleted node 30 at position 2 [OK]
- Deleting wrong node by miscounting positions
- Not updating the previous node's next pointer
- Confusing node values with positions
pos in a singly linked list?function deleteNode(head, pos) {
let current = head;
for (let i = 0; i < pos - 1; i++) {
current = current.next;
}
current.next = current.next.next;
return head;
}Solution
Step 1: Analyze loop for position traversal
The loop stops at node before position to delete, which is correct for pos > 0.Step 2: Check handling of pos = 0
When pos is 0, the loop does not run and current is head, but code does not update head pointer, so deletion fails.Final Answer:
It does not handle deletion when pos is 0 (head node). -> Option AQuick Check:
Missing head deletion case causes error [OK]
- Ignoring edge case when pos is 0
- Assuming loop handles all positions
- Not updating head pointer when needed
Solution
Step 1: Identify node at position 4
Positions start at 0, so position 4 is the fifth node with value 45.Step 2: Delete node at position 4
Remove node 45 by linking node 35's next to null.Step 3: Consider deletion at position 5
Position 5 is out of list range (list length is 5), so deletion does nothing safely.Final Answer:
After deletion at position 4: 5 -> 15 -> 25 -> 35 -> null; Deleting position 5 does nothing as it's out of range. -> Option CQuick Check:
Deleting last node removes it; out-of-range deletion ignored [OK]
- Trying to delete non-existent node causing errors
- Confusing positions and node values
- Not updating previous node's next pointer correctly
Ready to prove it?
Pass the test and this pattern moves unknown
