给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。


【每日一题】2021年10月28日--反转链表Ⅱ_商业

 

 【每日一题】2021年10月28日--反转链表Ⅱ_i++_02

思路:头插法

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode dummy = new ListNode(-1, head);
ListNode pre = dummy;
for(int i = 1; i < left; i++) {
pre = pre.next;
}
ListNode cur = pre.next;
ListNode next;
for(int i = left; i < right; i++) {
next = cur.next;
cur.next = next.next;
next.next = pre.next; //cur为什么不行
pre.next = next; //重点
}
return dummy.next;
}
}

【每日一题】2021年10月28日--反转链表Ⅱ_链表_03

作者:哥们要飞