题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * 当前思路比较清晰的是,如1,2,3,4,5,6,7,8 (m,n) 3,5 第一次就是把3节点和2节点交换位置 1、需要1这个节点的next指针指向3这个节点 2、3这个节点的next指针指向2这个节点 3、2这个节点的next指针指向,3这个节点的next 第二次,就是把2下的next指针4,赋值1的next,3这个节点赋值4的next, * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ public ListNode reverseBetween (ListNode head, int m, int n) { //取出m位置到指针,n 位置到指针,以及m-1的指针,n+1位置到指针 // ListNode temp = null;//当前为m位置 // for(int i=0;i<m-1;i++){ // temp = head.next; // } // ListNode cur = ListNode dummyNode = new ListNode(-1); dummyNode.next = head; ListNode pre = dummyNode; for (int i = 0; i < m - 1; i++) { pre = pre.next; } ListNode cur = pre.next; ListNode Cur_next ; for (int i = 0; i < n - m; i++) { Cur_next = cur.next; cur.next = Cur_next.next; Cur_next.next= pre.next; pre.next = Cur_next; } return dummyNode.next; } }