题目描述
给你单链表的头节点 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
C++ 代码
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int l, int r) {
//创建哨兵节点
ListNode* dummyHead = new ListNode(0);
dummyHead->next = head;
//获取需要反转的长度
r -= l;
ListNode* hh = dummyHead;
while (l-- > 1)
hh = hh->next;
//prv为需要反转的第一个节点
ListNode* prv = hh->next;
//cur为需要反转的第二个节点
ListNode* cur = prv->next;
while (r-- > 0) {
ListNode* nxt = cur->next;
cur->next = prv;
prv = cur;
cur = nxt;
}
hh->next->next = cur;
hh->next = prv;
return dummyHead->next;
}
};
兄弟你没有填邀请码可以填一个,都可以得AC币!嘿嘿,谢谢兄弟
我的邀请码是:GUDFH