题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
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) { //创建一个虚拟的首节点,为了最后的输出遍历 ListNode lastPre = new ListNode(-1); lastPre.next = head; //创建当前节点的指针 ListNode cur = head; //创建当前节点的前序节点的指针 ListNode pre = lastPre; //开始寻找第m-1时的当前节点,并保存在cur for (int i = 1; i < m ; i++) { pre = cur; cur = cur.next; } //创建next节点来保存原来head的下一个节点,为反转准备 ListNode next = null; //开始反转第[m,n]位 for (int i = m; i < n ; i++) { //当前cur在m-1位,而next在m位 //先将当前cur的下一位保存在next节点 next = cur.next; //将cur和next反转 cur.next = next.next; next.next = pre.next; pre.next = next; } return lastPre.next; } }
.next 是指向,只能指到节点的首部