描述:
将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。
示例:
输入:{1,2,3,4,5},2,4
返回值:{1,4,3,2,5}
图片分析:
代码分析:(Java为例)
public ListNode reverseBetween (ListNode head, int m, int n) {
ListNode ret = new ListNode(-1);
ret.next = head;
ListNode cur = head,prev = ret;
//找出要反转的节点
for(int j = 1;j<m;j++)
{
prev = cur;
cur = cur.next;
}
//开始反转
for(int i = m;i<n;i++)
{
ListNode temp = cur.next;
cur.next = temp.next;
temp.next = prev.next;
prev.next = temp;
}
return ret.next;
}
}