Plus One Linked List - Problem
Plus One to a Linked List Integer

Imagine you have a large number represented as a linked list where each node contains a single digit. The most significant digit (leftmost) is at the head of the list, and the least significant digit (rightmost) is at the tail.

Your task is to add 1 to this number and return the modified linked list. This might seem simple, but there's a catch - you need to handle carry operations just like in elementary arithmetic!

Example:
Input: 2 → 4 → 3 (represents 243)
Output: 2 → 4 → 4 (represents 244)

Challenge: What happens when you need to carry? For instance, 9 → 9 → 9 becomes 1 → 0 → 0 → 0!

Input & Output

example_1.py — Basic Addition
$ Input: head = [2,4,3] (represents 243)
Output: [2,4,4] (represents 244)
💡 Note: Simple case where adding 1 doesn't cause any carry. The last digit 3 becomes 4, and all other digits remain unchanged.
example_2.py — Single Carry
$ Input: head = [1,2,9] (represents 129)
Output: [1,3,0] (represents 130)
💡 Note: Adding 1 to 9 creates a carry. The 9 becomes 0, the carry propagates to make 2 become 3, and no further carries are needed.
example_3.py — Multiple Carries
$ Input: head = [9,9,9] (represents 999)
Output: [1,0,0,0] (represents 1000)
💡 Note: Worst case scenario where all digits are 9. Adding 1 causes carries to propagate through all digits, requiring a new head node to be created.

Visualization

Tap to expand
🔄 Recursive Carry PropagationOriginal: 9 → 9 → 9999→ null🚀 Recursion Forward Passf(9)f(9)f(9)f(∅)returns 1⬅️ Carry Propagation Backward9+1=10→0,19+1=10→0,19+1=10→0,11new head✅ Final Result: 1 → 0 → 0 → 01000
Understanding the Visualization
1
Reach the End
Recursion goes deep until it hits null, then returns carry=1
2
Process Each Digit
Each level adds carry to its digit, updates value, returns new carry
3
Handle Final Carry
If final carry exists, create new head node for the extra digit
Key Takeaway
🎯 Key Insight: Recursion provides a natural way to process linked lists from right to left, making carry propagation intuitive and eliminating the need for extra data structures.

Time & Space Complexity

Time Complexity
⏱️
O(n)

Single pass through all n nodes of the linked list

n
2n
Linear Growth
Space Complexity
O(n)

Recursion uses O(n) call stack space, but no additional data structures

n
2n
Linearithmic Space

Constraints

  • The number of nodes in the linked list is in the range [1, 100]
  • 0 ≤ Node.val ≤ 9
  • The number represented by the linked list does not have leading zeros except for the number 0 itself
  • You may assume the input is always a valid non-negative integer
Asked in
Google 42 Facebook 28 Amazon 35 Microsoft 19
84.2K Views
Medium Frequency
~15 min Avg. Time
1.8K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen