import java.util.*; public class Solution { public static ListNode reverseBetween(ListNode head, int m, int n) { ListNode node=new ListNode(-1); node.next=head; ListNode pre=node; for(int i=1;i<m;i++){ pre=pre.next; } ListNode right=pre.next; ListNode left=pre.next; for(int i=m;i<n;i++){ right=right.next; } ListNode last=right.next; pre.next=null; right.next=null; ListNode list=null; ListNode cur_left=left; while(cur_left!=null){ ListNode cur_list=cur_left.next; cur_left.next=list; list=cur_left; cur_left=cur_list; } pre.next=right; left.next=last; return node.next; } }