--- tags: leetcode --- # [92. Reverse Linked List II](https://leetcode.com/problems/reverse-linked-list-ii/) --- # My Solution ## The Key Idea for Solving This Coding Question ## C++ Code ```cpp= /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* reverseBetween(ListNode* head, int left, int right) { if (left == right || !head->next) { return head; } ListNode *dummy = new ListNode(-1000, head), *prev = dummy; for (int i = 1; i < left; ++i) { prev = prev->next; } ListNode* curr = prev->next; while (left < right) { ListNode* tmp = curr->next; curr->next = tmp->next; tmp->next = prev->next; prev->next = tmp; ++left; } head = dummy->next; delete dummy; return head; } }; ``` ## Time Complexity ## Space Complexity # Miscellaneous <!-- # Test Cases ``` [1,2,3,4,5] 2 4 ``` ``` [5] 1 1 ``` ``` [3,5] 1 2 ``` ``` [1,2,3,4,5] 1 4 ``` ``` [1,2,3,4,5,6,7,8,9,10] 3 7 ``` -->