2
* Definition for singly-linked list.6
* ListNode() : val(0), next(nullptr) {}7
* ListNode(int x) : val(x), next(nullptr) {}8
* ListNode(int x, ListNode *next) : val(x), next(next) {}13
ListNode *reverse(ListNode *head) {14
ListNode *prev = NULL;15
while (head != NULL) {16
ListNode *temp = head->next;24
ListNode *reverseN(ListNode *head, int right) {25
ListNode *temp = head;26
while (right != 1) temp = temp->next, right--;28
ListNode *temp2 = temp->next;31
ListNode *ans = reverse(head);36
ListNode *reverseBetween(ListNode *head, int left, int right) {37
if (left == right) return head;40
return reverseN(head, right);42
ListNode *temp = head;49
ListNode *temp2 = reverseN(temp->next, right);