LeetCode92.反转链表II(Java)
作者:互联网
题目
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
示例
输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
加入一个头结点,使操作统一,还能符合left从head开始的情况。
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode preH = new ListNode(-1);
preH.next = head;
ListNode cur = preH;// 因为第一个也可能需要反转!!!
int i = 0;
while (i < right) {
if (i == left) {
int j = i;
ListNode pre = cur;
while (j < right) {
pre = pre.next;
j++;
}
left++;
right--;
int temp = cur.val;
cur.val = pre.val;
pre.val = temp;
}
i++;
cur = cur.next;
}
return preH.next;
}
总结:
用所学
标签:pre,II,right,ListNode,cur,int,LeetCode92,链表,left 来源: https://blog.csdn.net/weixin_44998686/article/details/115003769