题解 | 链表内指定区间反转
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
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) { ListNode tempreNode = new ListNode(0); tempreNode.next = head; ListNode head1 = tempreNode; ListNode index = tempreNode; ListNode mHead = tempreNode; ListNode mHead1Index = tempreNode; ListNode nTail = tempreNode; ListNode mPre = tempreNode; if(m == 1&&n == 1){ return head; } for(int i = 0;i<=n ;i++){ if(i == m){ mHead = head1; index = head1; mHead1Index = head1; } if(i == n){ nTail = head1; } if(i == m-1){ mPre = head1; } head1 = head1.next; } ListNode tail = nTail.next; mPre.next = null; nTail.next = null; while(index!=nTail){ index = index.next; mHead.next = null; if(nTail.next == null){ nTail.next = mHead; }else{ mHead.next = nTail.next; nTail.next = mHead; } mHead = index; } mHead1Index.next = tail; mPre.next = index; return tempreNode.next; // write code here } }