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

image.png
输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
示例 2:
输入:head = [5], left = 1, right = 1
输出:[5]
提示:
链表中节点数目为 n
1 <= n <= 500
-500 <= Node.val <= 500
1 <= left <= right <= n
java代码:
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode pre = dummy;
for(int i = 1 ; i<m ; i++){
pre = pre.next;
}
head = pre.next;
for(int i = m ; i<n ; i++){
ListNode node = head.next;//node是2的下一个节点.node=3
System.out.println(node.val);//3 4
head.next = node.next;//让3的下一个节点和2的下一个相同,相当于2->4
System.out.println(head.val);//2 2
node.next = pre.next;//让1的下一个节点也就是2变成node的下一个节点,相当于让3->2
System.out.println(node.val);//3 4
pre.next = node;//相当于让1->3,最后整体连接起来,第一次的迭代就是1->3->2->4->5
System.out.println(pre.next.val);//3 4
}
return dummy.next;
}
}