【每日一题】2021年10月28日--反转链表Ⅱ
原创
©著作权归作者所有:来自51CTO博客作者哥们要飞的原创作品,请联系作者获取转载授权,否则将追究法律责任
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
思路:头插法
/**
* 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;
}
}
作者:哥们要飞