局部反转链表
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode dummyNode = new ListNode(-1);//题眼
dummyNode.next = head;
ListNode pre = dummyNode;
for(int i=0;i<left-1;i++){
pre = pre.next;
}
int diff = right - left;
ListNode cur = pre.next;
for(int i=0;i<diff;i++){
ListNode tmp = cur.next;
cur.next = tmp.next;//重点
tmp.next = pre.next;//重点
pre.next = tmp;
}
return dummyNode.next;
}

浙公网安备 33010602011771号