题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
注意的点:
1 .要把控范围外的 左边界 和 右边界
2. 注意头节点是否发生改变 如果发生改变,返回值也要改变
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 if (n-m<1){ return head; } ListNode pre = new ListNode(0); pre.next = head; for (int i=1;i<m;i++){ pre = pre.next; } ListNode node1 = pre.next; ListNode node2 = node1.next; ListNode node3 = node2.next; ListNode next = new ListNode(0); for (int i =0;i<n-m;i++){ if (i==n-m-1){ next = node2.next; } node2.next = node1; node1 = node2; node2 = node3; if (node3!=null){ node3 = node3.next; } } pre.next.next =next; pre.next = node1; if (m==1){ return pre.next; } return head; } }
#猹的刷题生涯#