← All patterns
Linked List

In-place Reversal (Linked List)

75 practice questions|Medium

When to use it

Reverse references of list nodes inline without using extra memory.

Key Signals & Indicators

  • Problem requires reversing list order, or sublists
  • Reversing groups (e.g. reverse k nodes)
  • Strict auxiliary space constraint O(1)

Pattern Boilerplate

c++
// C++ In-place Reversal Template
struct ListNode {
    int val;
    ListNode* next;
};

ListNode* reverseList(ListNode* head) {
    ListNode* prev = nullptr;
    ListNode* curr = head;
    
    while (curr != nullptr) {
        ListNode* nextNode = curr->next; // Store next node
        curr->next = prev;               // Reverse node reference
        prev = curr;                     // Shift pointers forward
        curr = nextNode;
    }
    return prev; // New head pointer
}

Problems using this pattern

1Add Two Numbers IIMedium
Linked ListMathStack
Solve →
2Add Two NumbersMedium
Linked ListMathRecursion
Solve →
3Add Two Polynomials Represented as Linked ListsMedium
Linked ListMathTwo Pointers
Solve →
4All O`one Data StructureHard
Hash TableLinked ListDesign
Solve →
5Convert Binary Number in a Linked List to IntegerEasy
Linked ListMath
Solve →
6Convert Binary Search Tree to Sorted Doubly Linked ListMedium
Linked ListStackTree
Solve →
7Convert Sorted List to Binary Search TreeMedium
Linked ListDivide and ConquerTree
Solve →
8Copy List with Random PointerMedium
Hash TableLinked List
Solve →
9Delete N Nodes After M Nodes of a Linked ListEasy
Linked List
Solve →
10Delete Node in a Linked ListMedium
Linked List
Solve →
11Delete Nodes From Linked List Present in ArrayMedium
ArrayHash TableLinked List
Solve →
12Delete the Middle Node of a Linked ListMedium
Linked ListTwo Pointers
Solve →
13Design a Text EditorHard
Linked ListStringStack
Solve →
14Design Authentication ManagerMedium
Hash TableLinked ListDesign
Solve →
15Design Browser HistoryMedium
ArrayLinked ListStack
Solve →
16Design Circular DequeMedium
ArrayLinked ListDesign
Solve →
17Design Circular QueueMedium
ArrayLinked ListDesign
Solve →
18Design Front Middle Back QueueMedium
ArrayLinked ListDesign
Solve →
19Design HashMapEasy
ArrayHash TableLinked List
Solve →
20Design HashSetEasy
ArrayHash TableLinked List
Solve →
21Design Linked ListMedium
Linked ListDesign
Solve →
22Design Most Recently Used QueueMedium
ArrayLinked ListDivide and Conquer
Solve →
23Design Phone DirectoryMedium
ArrayHash TableLinked List
Solve →
24Design SkiplistHard
Linked ListDesign
Solve →
25Design TwitterMedium
Hash TableLinked ListDesign
Solve →
26Double a Number Represented as a Linked ListMedium
Linked ListMathStack
Solve →
27Find the Minimum and Maximum Number of Nodes Between Critical PointsMedium
Linked List
Solve →
28Flatten a Multilevel Doubly Linked ListMedium
Linked ListDepth-First SearchDoubly-Linked List
Solve →
29Flatten Binary Tree to Linked ListMedium
Linked ListStackTree
Solve →
30Insert Greatest Common Divisors in Linked ListMedium
Linked ListMathNumber Theory
Solve →
31Insert into a Sorted Circular Linked ListMedium
Linked List
Solve →
32Insertion Sort ListMedium
Linked ListSorting
Solve →
33Intersection of Two Linked ListsEasy
Hash TableLinked ListTwo Pointers
Solve →
34LFU CacheHard
Hash TableLinked ListDesign
Solve →
35Linked List ComponentsMedium
ArrayHash TableLinked List
Solve →
36Linked List Cycle IIMedium
Hash TableLinked ListTwo Pointers
Solve →
37Linked List CycleEasy
Hash TableLinked ListTwo Pointers
Solve →
38Linked List in Binary TreeMedium
Linked ListTreeDepth-First Search
Solve →
39Linked List Random NodeMedium
Linked ListMathReservoir Sampling
Solve →
40LRU CacheMedium
Hash TableLinked ListDesign
Solve →
41Max StackHard
Linked ListStackDesign
Solve →
42Maximum Twin Sum of a Linked ListMedium
Linked ListTwo PointersStack
Solve →
43Merge In Between Linked ListsMedium
Linked List
Solve →
44Merge k Sorted ListsHard
Linked ListDivide and ConquerHeap (Priority Queue)
Solve →
45Merge Nodes in Between ZerosMedium
Linked ListSimulation
Solve →
46Merge Two Sorted ListsEasy
Linked ListRecursion
Solve →
47Middle of the Linked ListEasy
Linked ListTwo Pointers
Solve →
48Minimum Pair Removal to Sort Array IEasy
ArrayHash TableLinked List
Solve →
49Minimum Pair Removal to Sort Array IIHard
ArrayHash TableLinked List
Solve →
50Next Greater Node In Linked ListMedium
ArrayLinked ListStack
Solve →
51Odd Even Linked ListMedium
Linked List
Solve →
52Palindrome Linked ListEasy
Linked ListTwo PointersStack
Solve →
53Partition ListMedium
Linked ListTwo Pointers
Solve →
54Plus One Linked ListMedium
Linked ListMath
Solve →
55Populating Next Right Pointers in Each Node IIMedium
Linked ListTreeDepth-First Search
Solve →
56Populating Next Right Pointers in Each NodeMedium
Linked ListTreeDepth-First Search
Solve →
57Remove Duplicates From an Unsorted Linked ListMedium
Hash TableLinked List
Solve →
58Remove Duplicates from Sorted List IIMedium
Linked ListTwo Pointers
Solve →
59Remove Duplicates from Sorted ListEasy
Linked List
Solve →
60Remove Linked List ElementsEasy
Linked ListRecursion
Solve →
61Remove Nodes From Linked ListMedium
Linked ListStackRecursion
Solve →
62Remove Nth Node From End of ListMedium
Linked ListTwo Pointers
Solve →
63Remove Zero Sum Consecutive Nodes from Linked ListMedium
Hash TableLinked List
Solve →
64Reorder ListMedium
Linked ListTwo PointersStack
Solve →
65Reverse Linked List IIMedium
Linked List
Solve →
66Reverse Linked ListEasy
Linked ListRecursion
Solve →
67Reverse Nodes in Even Length GroupsMedium
Linked List
Solve →
68Reverse Nodes in k-GroupHard
Linked ListRecursion
Solve →
69Rotate ListMedium
Linked ListTwo Pointers
Solve →
70Sort ListMedium
Linked ListTwo PointersDivide and Conquer
Solve →
71Spiral Matrix IVMedium
ArrayLinked ListMatrix
Solve →
72Split Linked List in PartsMedium
Linked List
Solve →
73Steps to Make Array Non-decreasingMedium
ArrayLinked ListDynamic Programming
Solve →
74Swap Nodes in PairsMedium
Linked ListRecursion
Solve →
75Swapping Nodes in a Linked ListMedium
Linked ListTwo Pointers
Solve →