题目:
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。

方法:双指针+穿针引线
函数代码:
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
if(!head)
{
return head;
}
ListNode *dummy=new ListNode(0);
dummy->next=head;
ListNode *pre=dummy;
for(int i=0;i<m-1;i++)
{
pre=pre->next;
}
ListNode *p=pre->next;
for(int i=m;i<n;i++)
{
ListNode *q=p->next;
p->next=q->next;
q->next=pre->next;
pre->next=q;
}
return dummy->next;
}
};

本文介绍了一种在链表中反转指定区间[m,n]的高效算法。通过双指针技术及穿针引线的方法,实现了一趟扫描内完成链表区间的反转。此算法适用于1≤m≤n≤链表长度的条件。
578

被折叠的 条评论
为什么被折叠?



