โ† Back to Index

๐Ÿ“š Reverse Linked List II โ€“ Java Cheat Sheet (One Page)

๐Ÿ“Œ What Is It?

The Reverse Linked List II problem involves reversing a portion of a linked list between two given positions left and right. The rest of the list remains unchanged.

๐Ÿงฑ Pattern Template

public ListNode reverseBetween(ListNode head, int left, int right) {
    if (head == null || left == right) return head;

    // Dummy node to simplify edge cases
    ListNode dummy = new ListNode(0);
    dummy.next = head;

    // Move to the node before the 'left' position
    ListNode prev = dummy;
    for (int i = 1; i < left; i++) {
        prev = prev.next;
    }

    // Reverse the sublist
    ListNode curr = prev.next;
    ListNode next = null;
    for (int i = 0; i < right - left; i++) {
        next = curr.next;
        curr.next = next.next;
        next.next = prev.next;
        prev.next = next;
    }

    return dummy.next;
}

โœ… Use Cases

๐Ÿ“˜ Common LeetCode Problems

๐Ÿงช Example: Reverse Linked List II

Input: head = [1,2,3,4,5], left = 2, right = 4
Output: [1,4,3,2,5]
Explanation: The sublist [2,3,4] is reversed.

๐Ÿ’ก Pro Tips