Linked List In-Place Manipulation
FundamentalsReversing, reordering, and partitioning pointer chains with O(1) space
70 problems·13 Easy·50 Medium·7 Hard
Pattern Study Guide & Cheat Sheet▼
Rearrange nodes and pointers in-place by maintaining dummy heads, tracking previous/current/next pointers, and preserving detached segments.
Core Invariant: Pointer Surgery: Always save `temp = curr.next` before overwriting `curr.next`. Use a `dummy` node (`dummy.next = head`) to eliminate edge-case conditionals when mutating the head.
Recognize it (Keywords & Signals)
- Reverse linked list / reverse nodes in K-groups
- Merge two or K sorted linked lists
- Remove N-th node from end of list
- Reorder list (interleave first half with reversed second half)
- Partition list around value X
When NOT to use
Random indexed access is required or node count is static and O(N) space is acceptable (convert to list).
How to solve (Step-by-step)
- 1.Create `dummy = ListNode(0, head)` and set `prev = None`, `curr = head`.
- 2.Before modifying any link: save `next_node = curr.next`.
- 3.Reverse or rewire pointer: `curr.next = prev`.
- 4.Advance pointers: `prev = curr; curr = next_node`.
- 5.Return `dummy.next` or `prev` depending on whether head was replaced.
Watch for (Interview Traps)
- Overwriting `curr.next` before caching the old next reference
- Creating circular loops by forgetting to terminate `tail.next = None`
- Failing on empty list (`head = None`) or single-node lists
Iterative In-Place Linked List Reversal
def reverse_linked_list(head: ListNode | None) -> ListNode | None:
prev = None
curr = head
while curr:
next_temp = curr.next # 1. Save next reference before breaking link
curr.next = prev # 2. Reverse direction of pointer
prev = curr # 3. Advance prev forward
curr = next_temp # 4. Advance curr forward
return prev # New head of reversed list- Cost
- O(n) single pass · O(1) in-place pointer updates (Zero node allocations; all modifications are in-place.)
Canonical problems
#206 Reverse Linked List: Foundational 3-pointer reversal
#21 Merge Two Sorted Lists: Dummy head + compare node values to splice
#143 Reorder List: Find middle + reverse second half + interleave
#25 Reverse Nodes in k-Group: Count k nodes, reverse segment, reconnect recursively
⌘K
Medium·21 companies·Max freq 100%·Acc 52.0%
BroadcomSymantecNeetCode 150+18
#143Reorder List
Medium·18 companies·Max freq 89%·Acc 65.7%
NeetCode 150NeetCode 150Arista Networks+15
Medium·15 companies·Max freq 68%·Acc 69.8%
AltimetrikArista NetworksBloomberg+12
#706Design HashMap
Easy·13 companies·Max freq 100%·Acc 66.7%
TripActionsCouchbasePalo Alto Networks+10
Easy·13 companies·Max freq 75%·Acc 64.2%
AirbnbWells FargoSamsung+10
Medium·11 companies·Max freq 100%·Acc 52.1%
BlackBuckArista NetworksNvidia+8
Medium·11 companies·Max freq 88%·Acc 84.1%
Texas InstrumentsAdobeOla Cabs+8
Medium·10 companies·Max freq 100%·Acc 66.9%
ZenefitsLyftSalesforce+7
Easy·10 companies·Max freq 96%·Acc 82.4%
NutanixRobloxMathWorks+7
Easy·9 companies·Max freq 100%·Acc 57.1%
McDonaldsNvidiaBloomberg+6
Easy·9 companies·Max freq 75%·Acc 54.9%
Arista NetworksBloombergAmazon+6
Medium·8 companies·Max freq 88%·Acc 64.7%
JTGJosh TechnologyZopsmart+5
Medium·8 companies·Max freq 53%·Acc 67.4%
Walmart LabsBloombergMeta+5
Medium·7 companies·Max freq 79%·Acc 63.1%
BloombergAdobeAmazon+4
Medium·7 companies·Max freq 50%·Acc 57.8%
BloombergMetaMicrosoft+4
Medium·7 companies·Max freq 38%·Acc 60.9%
tcsGoogleGoldman Sachs+4
Medium·6 companies·Max freq 100%·Acc 69.5%
Info EdgeMicrosoftGoogle+3
Medium·6 companies·Max freq 76%·Acc 83.3%
Josh TechnologyAmazonGoogle+3
Medium·6 companies·Max freq 51%·Acc 53.2%
Palo Alto NetworksByteDanceUber+3
Medium·5 companies·Max freq 38%·Acc 69.4%
GoogleAmazonBloomberg+2
Easy·5 companies·Max freq 25%·Acc 65.2%
MetaMicrosoftGoogle+2
Medium·4 companies·Max freq 64%·Acc 65.6%
MetaTikTokAmazon+1
Medium·4 companies·Max freq 63%·Acc 38.6%
MetaAndurilTikTok+1
Medium·4 companies·Max freq 38%·Acc 64.5%
MicrosoftBloombergAmazon+1
Medium·4 companies·Max freq 13%·Acc 91.4%
MetaBloombergMicrosoft+1
Medium·3 companies·Max freq 25%·Acc 61.3%
AmazonMicrosoftGoogle
Hard·3 companies·Max freq 16%·Acc 39.0%
AmazonMicrosoftGoogle
Medium·2 companies·Max freq 38%·Acc 75.7%
MicrosoftAmazon
# | Problem | Difficulty | Top Companies↓ | Frequency | Acceptance | |
|---|---|---|---|---|---|---|
| #146 | LRU Cache Hash TableLinked ListDesignDoubly-Linked List | Medium | 100% | 47.6% | ||
| #23 | Merge k Sorted Lists Linked ListDivide and ConquerHeap (Priority Queue)Merge SortTournament Sort | Hard | 100% | 60.0% | ||
| #2 | Add Two Numbers Linked ListMathRecursion | Medium | 100% | 48.8% | ||
| #21 | Merge Two Sorted Lists Linked ListRecursion | Easy | 100% | 68.5% | ||
| #206 | Reverse Linked List Linked ListRecursion | Easy | 100% | 80.8% | ||
| #460 | LFU Cache Hash TableLinked ListDesignDoubly-Linked List | Hard | 100% | 0.5% | ||
| #25 | Reverse Nodes in k-Group Linked ListRecursion | Hard | 100% | 66.6% | ||
| #141 | Linked List Cycle Hash TableLinked ListTwo PointersFloyd's Cycle Finding Algorithm | Easy | 100% | 54.7% | ||
| #138 | Copy List with Random Pointer Hash TableLinked List | Medium | 100% | 63.3% | ||
| #622 | Design Circular Queue ArrayLinked ListDesignQueue | Medium | 100% | 55.0% | ||
| #19 | Remove Nth Node From End of List Linked ListTwo Pointers | Medium | 100% | 52.0% | ||
| #234 | Palindrome Linked List Linked ListTwo PointersStackRecursion | Easy | 91% | 58.3% | ||
| #143 | Reorder List Linked ListTwo PointersStackRecursion | Medium | 89% | 65.7% | ||
| #355 | Design Twitter Hash TableLinked ListDesignHeap (Priority Queue) | Medium | 100% | 45.1% | ||
| #92 | Reverse Linked List II Linked List | Medium | 89% | 51.9% | ||
| #24 | Swap Nodes in Pairs Linked ListRecursion | Medium | 68% | 69.8% | ||
| #706 | Design HashMap ArrayHash TableLinked ListDesignHash Function | Easy | 100% | 66.7% | ||
| #1472 | Design Browser History ArrayLinked ListStackDesignDoubly-Linked ListData Stream | Medium | 100% | 78.4% | ||
| #432 | All O`one Data Structure Hash TableLinked ListDesignDoubly-Linked List | Hard | 100% | 44.4% | ||
| #876 | Middle of the Linked List Linked ListTwo Pointers | Easy | 88% | 82.1% | ||
| #142 | Linked List Cycle II Hash TableLinked ListTwo PointersFloyd's Cycle Finding Algorithm | Medium | 77% | 58.5% | ||
| #160 | Intersection of Two Linked Lists Hash TableLinked ListTwo Pointers | Easy | 75% | 64.2% | ||
| #328 | Odd Even Linked List Linked List | Medium | 67% | 62.6% | ||
| #82 | Remove Duplicates from Sorted List II Linked ListTwo Pointers | Medium | 100% | 52.1% | ||
| #716 | Max Stack Linked ListStackDesignDoubly-Linked ListOrdered Set | Hard | 100% | 46.0% | ||
| #237 | Delete Node in a Linked List Linked List | Medium | 88% | 84.1% | ||
| #109 | Convert Sorted List to Binary Search Tree Linked ListDivide and ConquerTreeBinary Search TreeBinary Tree | Medium | 100% | 66.9% | ||
| #1290 | Convert Binary Number in a Linked List to Integer Linked ListMath | Easy | 96% | 82.4% | ||
| #83 | Remove Duplicates from Sorted List Linked List | Easy | 100% | 57.1% | ||
| #1206 | Design Skiplist Linked ListDesign | Hard | 100% | 59.8% | ||
| #203 | Remove Linked List Elements Linked ListRecursion | Easy | 75% | 54.9% | ||
| #61 | Rotate List Linked ListTwo Pointers | Medium | 63% | 42.9% | ||
| #148 | Sort List Linked ListTwo PointersDivide and ConquerSortingMerge Sort | Medium | 51% | 64.8% | ||
| #445 | Add Two Numbers II Linked ListMathStack | Medium | 50% | 62.8% | ||
| #2074 | Reverse Nodes in Even Length Groups Linked List | Medium | 88% | 64.7% | ||
| #116 | Populating Next Right Pointers in Each Node Linked ListTreeDepth-First SearchBreadth-First SearchBinary Tree | Medium | 53% | 67.4% | ||
| #430 | Flatten a Multilevel Doubly Linked List Linked ListDepth-First SearchDoubly-Linked List | Medium | 79% | 63.1% | ||
| #117 | Populating Next Right Pointers in Each Node II Linked ListTreeDepth-First SearchBreadth-First SearchBinary Tree | Medium | 50% | 57.8% | ||
| #2095 | Delete the Middle Node of a Linked List Linked ListTwo Pointers | Medium | 38% | 60.9% | ||
| #2058 | Medium | 100% | 69.5% | |||
| #705 | Design HashSet ArrayHash TableLinked ListDesignHash Function | Easy | 88% | 68.2% | ||
| #2130 | Maximum Twin Sum of a Linked List Linked ListTwo PointersStack | Medium | 76% | 83.3% | ||
| #1171 | Remove Zero Sum Consecutive Nodes from Linked List Hash TableLinked List | Medium | 51% | 53.2% | ||
| #1721 | Swapping Nodes in a Linked List Linked ListTwo Pointers | Medium | 38% | 69.6% | ||
| #707 | Design Linked List Linked ListDesign | Medium | 31% | 30.5% | ||
| #1367 | Linked List in Binary Tree Linked ListTreeDepth-First SearchBinary Tree | Medium | 100% | 52.0% | ||
| #641 | Design Circular Deque ArrayLinked ListDesignQueue | Medium | 50% | 64.8% | ||
| #86 | Partition List Linked ListTwo Pointers | Medium | 38% | 61.5% | ||
| #725 | Split Linked List in Parts Linked List | Medium | 38% | 70.6% | ||
| #3217 | Delete Nodes From Linked List Present in Array ArrayHash TableLinked List | Medium | 38% | 69.4% | ||
| #3507 | Minimum Pair Removal to Sort Array I ArrayHash TableLinked ListHeap (Priority Queue)SimulationDoubly-Linked ListOrdered Set | Easy | 25% | 65.2% | ||
| #147 | Insertion Sort List Linked ListSorting | Medium | 20% | 59.6% | ||
| #426 | Convert Binary Search Tree to Sorted Doubly Linked List Linked ListStackTreeDepth-First SearchBinary Search TreeBinary TreeDoubly-Linked List | Medium | 64% | 65.6% | ||
| #2326 | Spiral Matrix IV ArrayLinked ListMatrixSimulation | Medium | 64% | 82.3% | ||
| #708 | Insert into a Sorted Circular Linked List Linked List | Medium | 63% | 38.6% | ||
| #1019 | Next Greater Node In Linked List ArrayLinked ListStackMonotonic Stack | Medium | 38% | 64.5% | ||
| #2487 | Remove Nodes From Linked List Linked ListStackRecursionMonotonic Stack | Medium | 25% | 75.0% | ||
| #817 | Linked List Components ArrayHash TableLinked List | Medium | 25% | 58.0% | ||
| #2807 | Insert Greatest Common Divisors in Linked List Linked ListMathNumber Theory | Medium | 13% | 91.4% | ||
| #1670 | Design Front Middle Back Queue ArrayLinked ListDesignQueueDoubly-Linked ListData Stream | Medium | 50% | 58.3% | ||
| #382 | Linked List Random Node Linked ListMathReservoir SamplingRandomized | Medium | 38% | 65.0% | ||
| #2816 | Double a Number Represented as a Linked List Linked ListMathStack | Medium | 25% | 61.3% | ||
| #3510 | Minimum Pair Removal to Sort Array II ArrayHash TableLinked ListHeap (Priority Queue)SimulationDoubly-Linked ListOrdered Set | Hard | 16% | 39.0% | ||
| #1756 | Design Most Recently Used Queue ArrayLinked ListDivide and ConquerDesignSimulationDoubly-Linked ListSqrt DecompositionTreapSplay Tree | Medium | 100% | 78.3% | ||
| #1836 | Remove Duplicates From an Unsorted Linked List Hash TableLinked List | Medium | 38% | 75.7% | ||
| #369 | Plus One Linked List Linked ListMath | Medium | 25% | 61.2% | ||
| #1474 | Easy | 27% | 74.4% | |||
| #2289 | Steps to Make Array Non-decreasing ArrayLinked ListDynamic ProgrammingStackMonotonic StackSimulation | Medium | 25% | 25.0% | ||
| #1634 | Add Two Polynomials Represented as Linked Lists Linked ListMathTwo Pointers | Medium | 25% | 61.1% | ||
| #379 | Design Phone Directory ArrayHash TableLinked ListDesignQueue | Medium | 25% | 53.2% |
Showing 70 of 70 problems in Linked List In-Place ManipulationFiltered: All Companies