1.题目
翻转链表中第m个节点到第n个节点的部分
样例
给出链表1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null
2.算法
先找到m节点的位置在反转,下一个节点放到m节点前的位置,直到到节点
public ListNode reverseBetween(ListNode head, int m , int n)
{
// write your code
if (head == null)
{
return null;
}
ListNode helper = new ListNode(0);
helper.next = head;
ListNode pre = helper;
int i = 1;
while (pre.next != null && i < m)
{
pre = pre.next;
i++;
}
if (i < m)
{
return head;
}
ListNode mnode = pre.next;
ListNode cur = mnode.next;
while (cur != null && i < n)
{
ListNode next = cur.next;
cur.next = pre.next;
pre.next = cur;
mnode.next = next;
cur = next;
i++;
}
return helper.next;
}