/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
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 newHead=new ListNode(-1);
newHead.next=head;
ListNode prev=newHead;
for(int i=0;i<m-1;i++)
{
prev=prev.next;
}
ListNode rightNode=prev;
for(int i=0;i<n-m+1;i++)
{
rightNode=rightNode.next;
}
ListNode leftNode=prev.next;
ListNode cur=rightNode.next;
prev.next=null;
rightNode.next=null;
reverseList(leftNode);
prev.next=rightNode;
leftNode.next=cur;
return newHead.next;}
private void ListNode reverseList(ListNode Head)
{
ListNode prev=head;
ListNode cur=null;
while(prev!=null)
{ListNode prev_next=prev.next;
prev.next=cur;
cur=prev;
prev=prev_next;
}
}
}
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
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 newHead=new ListNode(-1);
newHead.next=head;
ListNode prev=newHead;
for(int i=0;i<m-1;i++)
{
prev=prev.next;
}
ListNode rightNode=prev;
for(int i=0;i<n-m+1;i++)
{
rightNode=rightNode.next;
}
ListNode leftNode=prev.next;
ListNode cur=rightNode.next;
prev.next=null;
rightNode.next=null;
reverseList(leftNode);
prev.next=rightNode;
leftNode.next=cur;
return newHead.next;}
private void reverseList(ListNode head)
{
ListNode prev=head;
ListNode cur=null;
while(prev!=null)
{ListNode prev_next=prev.next;
prev.next=cur;
cur=prev;
prev=prev_next;
}
}
}
第二次修改+图
第三次修改+