Leetcode Top Interview ✨
GithubLinkedinXOfficial Website
  • Leetcode Top Interview 🎯
  • Guide to Calculating Algorithm Complexity 🚀
  • Topic 1 Array - String
    • 88. Merge Sorted Arrays 🧩
    • 27. Remove Element 🧹
    • 26. Remove Duplicates from Sorted Array 🚫
    • 80. Remove Duplicates from Sorted Array II 🚫🚫
    • 169. Majority Element 👑
    • 189. Rotate Array 🔄
    • 121. Best Time to Buy and Sell Stock 📈
    • 122. Best Time to Buy and Sell Stock II 📈💰
    • 55. Jump Game 🏃‍♂️
    • 45. Jump Game II 🏃‍♂️
    • 274. H-Index 📊
    • 380. Insert Delete GetRandom O(1) 🎲
    • 238. Product of Array Except Self 🔄
    • 134. Gas Station ⛽
    • 135. Candy 🍬
    • 42. Trapping Rain Water 🌧️
    • 13. Roman to Integer 🔢
    • 018 Integer to Roman
    • 58. Length of Last Word 🔠
    • 14. Longest Common Prefix 🌱
    • 151. Reverse Words in a String 🔄
    • 6. Zigzag Conversion 🔀
    • 28. Find the Index of the First Occurrence in a String 🔄
    • 68. Text Justification 🔄
  • Topic 2 Two Pointers
    • 125. Valid Palindrome 🚦
    • 392. Is Subsequence 📏
    • 167. Two Sum II - Input Array Is Sorted 🔍
    • 11. Container With Most Water 🏞️
    • 15. 3Sum 🌐
  • Topic 3 Sliding Window
    • 209. Minimum Size Subarray Sum 🌐
    • 3. Longest Substring Without Repeating Characters 🌐
    • 30. Substring with Concatenation of All Words 🌐
    • 76. Minimum Window Substring 🌐
  • Topic 4 Matrix
    • 36. Valid Sudoku 🌐
    • 54. Spiral Matrix 🌐
    • 48. Rotate Image 🔄
    • 73. Set Matrix Zeroes
    • 289. Game of Life 🖼️
  • Topic 5 Hashmap
    • 383. Ransom Note 🔍
    • 205. Isomorphic Strings 🔍
    • 290. Word Pattern 🧩
    • 242. Valid Anagram 🎢
    • 49. Group Anagrams 🤹‍♂️
    • 1. Two Sum 🔍
    • 202. Happy Number 🤩
    • 219. Contains Duplicate II 🔍
    • 128. Longest Consecutive Sequence 🔍
  • Topic 6 Intervals
    • 228. Summary Ranges 📊
    • 56. Merge Intervals 🔀
    • 57. Insert Interval 🆕
    • 452. Minimum Number of Arrows to Burst Balloons 🎈
  • Topic 7 Stack
    • 20. Valid Parentheses 🔍
    • 71. Simplify Path 🗺️
    • 155. Min Stack 🗃️
    • 150. Evaluate Reverse Polish Notation 🧠💻
    • 224. Basic Calculator 🧮
  • Topic 8 Linked List
    • 141. Linked List Cycle 🔁
    • 2. Add Two Numbers 🔢
    • 21. Merge Two Sorted Lists 🔗
    • 138. Copy List with Random Pointer 🔗
    • 92. Reverse Linked List II 🔄
      • Let’s explain step by step 🐇
    • 25. Reverse Nodes in k-Group 🔄
    • 19. Remove Nth Node From End of List 🗑️
    • 82. Remove Duplicates from Sorted List II ❌🔢
    • 61. Rotate List 🔄
    • 86. Partition List 🔗
    • 146. LRU Cache 🔗
  • Topic 9 Binary Tree General
    • 104. Maximum Depth of Binary Tree 🔗
    • 100. Same Tree 🔗
    • 226. Invert Binary Tree 🔗
    • 101. Symmetric Tree 🔗
    • 105. Construct Binary Tree from Preorder and Inorder Traversal 🔗
    • 106. Construct Binary Tree from Inorder and Postorder Traversal 🔗
    • 117. Populating Next Right Pointers in Each Node II 🔗
    • 114. Flatten Binary Tree to Linked List 🔗
    • 112. Path Sum 🔗
    • 129. Sum Root to Leaf Numbers 🔗
      • What_is_DFS
    • 124. Binary Tree Maximum Path Sum 🔗
Powered by GitBook
On this page
  • Input:
  • Step 1: Initialization
  • Step 2: Reverse the Sublist
  • Iteration 1:
  • Iteration 2:
  • Step 3: Return the Result

Was this helpful?

  1. Topic 8 Linked List
  2. 92. Reverse Linked List II 🔄

Let’s explain step by step 🐇

how to reverse part of a linked list from left = 2 to right = 4 using an example 1:


Input:

The linked list: 1 -> 2 -> 3 -> 4 -> 5 We need to reverse the section between positions left = 2 and right = 4.


Step 1: Initialization

Create a dummy node to make edge cases easier to handle. The list now looks like this:

dummy -> 1 -> 2 -> 3 -> 4 -> 5

Declare pointers:

  • prev: Points to the node just before the left position. Initially, prev points to dummy.

  • Move prev to the node just before left. After the loop, prev points to:

prev -> 1

Identify important nodes:

  • start: The first node of the section to be reversed (left position), which is 2.

  • then: The node immediately after start, which is 3.

Initial setup looks like this:

dummy -> 1 -> 2 -> 3 -> 4 -> 5
           prev   start   then

Step 2: Reverse the Sublist

We loop right - left times (2 times in this case) to reverse the section between left and right.


Iteration 1:

Update links:

  • start.next = then.next: Node 2 (start) now points to 4 (skipping 3).

  • then.next = prev.next: Node 3 (then) now points to 2.

  • prev.next = then: Node 1 (prev) now points to 3.

The list now looks like this:

dummy -> 1 -> 3 -> 2 -> 4 -> 5
         prev   then   start

Move then to the next node after start (node 4):

then -> 4

Iteration 2:

Update links:

  • start.next = then.next: Node 2 (start) now points to 5 (skipping 4).

  • then.next = prev.next: Node 4 (then) now points to 3.

  • prev.next = then: Node 1 (prev) now points to 4.

The list now looks like this:

dummy -> 1 -> 4 -> 3 -> 2 -> 5
         prev         start

Move then to the next node after start (node 5):

theen -> 5

Step 3: Return the Result

After completing the loop, the section from left to right has been reversed. Return the list starting from dummy.next:

1 -> 4 -> 3 -> 2 -> 5
Previous92. Reverse Linked List II 🔄Next25. Reverse Nodes in k-Group 🔄

Last updated 4 months ago

Was this helpful?