给定一个单向链表的头节点head,以及两个整数from和to,在单向链表上把第from个节点到第to个节点这一部分进行反转。
例如:1->2->3->4->5->null,from=2,to=4调整结果为:1->4->3->2->5->null
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
public ListNode reverseBetween (ListNode head, int m, int n) {
// write code here
ListNode res=new ListNode(0);
res.next=head;
int count=0;
ListNode preNode=null;
ListNode fromNode =null;
ListNode toNode =null;
ListNode cur = res;
while(cur!=null){
if(count==m-1){
preNode=cur;
}
if(m==count){
fromNode=cur;
}
if(n==count){
toNode=cur;
}
if(count==n+1){
break;
}
count++;
cur=cur.next;
}
preNode.next=null;
toNode.next=null;
preNode.next=reverse(fromNode);
fromNode.next=cur;
return res.next;
}
public ListNode reverse(ListNode head){
ListNode pre=null;
ListNode cur=head;
while(cur!=null){
ListNode next =cur.next;
cur.next=pre;
pre=cur;
cur=next;
}
return pre;
}
}