
/** * 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) { ListNode *dummy =new ListNode(-1); dummy->next = head; ListNode *prev = dummy; for(int i = 0; i < left - 1; i ++) prev = prev->next; ListNode *l = prev->next; ListNode *r = l->next; for(int i = 0; i < (right - left); i ++){ ListNode *next = r->next; r->next = l; l = r, r = next; } prev->next->next = r; prev->next = l; return dummy->next; }};