Get Length of Linked List in DSA Typescript - Time & Space Complexity
We want to understand how the time to find the length of a linked list changes as the list grows.
How does the number of steps increase when the list gets longer?
Analyze the time complexity of the following code snippet.
function getLength(head: ListNode | null): number {
let count = 0;
let current = head;
while (current !== null) {
count++;
current = current.next;
}
return count;
}
This code counts how many nodes are in a linked list by moving through each node one by one.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop that visits each node once.
- How many times: Exactly once per node in the list, from start to end.
As the list gets longer, the number of steps grows directly with the number of nodes.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 steps |
| 100 | About 100 steps |
| 1000 | About 1000 steps |
Pattern observation: The steps increase one by one as the list grows longer.
Time Complexity: O(n)
This means the time to find the length grows in direct proportion to the number of nodes.
[X] Wrong: "Getting the length is always instant or constant time because we just count nodes."
[OK] Correct: We must visit each node once to count it, so the time depends on how many nodes there are.
Understanding this helps you explain how simple operations on linked lists scale, a key skill in many coding problems.
"What if the linked list stored its length as a property updated on insertions and deletions? How would the time complexity of getting the length change?"
Practice
getLength(head: ListNode | null): number typically return when given the head of a linked list?Solution
Step 1: Understand the function purpose
The function namedgetLengthis designed to count nodes, so it returns the number of nodes in the list.Step 2: Confirm what is returned
Since it counts nodes, it returns the total count, not values or nodes themselves.Final Answer:
The number of nodes in the linked list -> Option BQuick Check:
Function name and return type indicate count [OK]
- Confusing length with node value
- Thinking it returns the last node
- Assuming it sums node values
count to start counting nodes in a linked list?Solution
Step 1: Identify the correct initial value for counting
Counting nodes requires a number starting at zero, socountshould be initialized to 0.Step 2: Check other options
Initializing tonull,head, orundefinedis incorrect for counting.Final Answer:
let count = 0; -> Option AQuick Check:
Counting starts at zero [OK]
- Initializing count to null or undefined
- Using head node as count
- Not initializing count at all
class ListNode {
val: number;
next: ListNode | null;
constructor(val: number) {
this.val = val;
this.next = null;
}
}
function getLength(head: ListNode | null): number {
let count = 0;
let current = head;
while (current !== null) {
count++;
current = current.next;
}
return count;
}
const node1 = new ListNode(10);
const node2 = new ListNode(20);
const node3 = new ListNode(30);
node1.next = node2;
node2.next = node3;
console.log(getLength(node1));Solution
Step 1: Trace the linked list nodes
There are three nodes linked: node1 -> node2 -> node3 -> null.Step 2: Count nodes in the while loop
The loop increments count for each node until current is null, so count becomes 3.Final Answer:
3 -> Option AQuick Check:
3 nodes counted [OK]
- Counting only 2 nodes by missing last
- Returning zero if loop not entered
- Syntax errors causing runtime error
function getLength(head: ListNode | null): number {
let count = 0;
let current = head;
while (current.next !== null) {
count++;
current = current.next;
}
return count;
}Solution
Step 1: Analyze the while loop condition
The loop runs whilecurrent.next !== null, so it stops before the last node.Step 2: Understand counting effect
Because the last node'snextis null, it is not counted, so length is one less than actual.Final Answer:
It misses counting the last node -> Option DQuick Check:
Loop condition excludes last node [OK]
- Using current.next in loop condition
- Not counting last node
- Assuming loop counts all nodes
val and next, how would you modify the getLength function to return 0 if the list is empty and the correct length otherwise?Solution
Step 1: Handle empty list case
Check ifheadisnullbefore counting; if yes, return 0 immediately.Step 2: Count nodes if list is not empty
Ifheadis not null, loop through nodes incrementing count untilcurrentis null.Final Answer:
Check if head is null before loop; return 0 if true, else count nodes -> Option CQuick Check:
Empty list returns 0, else counts nodes [OK]
- Starting count at 1 incorrectly
- Returning 1 for empty list
- Using node value instead of node presence
Ready to prove it?
Pass the test and this pattern moves unknown
