题解 | #链表内指定区间反转#
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
该题分为两步走,第一步寻找第m个节点,第二步从m到n进行节点翻转
寻找m
寻找m同时需要记录 m的pre节点,因为m到n之间的节点翻转之后 原 m的pre节点 的next指针会变化
翻转m到n之间的节点
思路,从m作为当前节点cur开始 将cur下一个节点放到第m个位置,即将cur的下个节点从原链表删除,然后再添加到第m个位置
如:1 -> 2 -> 3 -> 4 -> 5 -> null 翻转该链表 m= 1 , n = 5
cur = 1(节点)
第一步:将cur节点下一个节点删除,在添加到第m个位置 2 -> 1 -> 3 -> 4 -> 5
第二步:将cur节点下一个节点删除,在添加到第m个位置 3 -> 2 -> 1 -> 4 -> 5
第三步:将cur节点下一个节点删除,在添加到第m个位置 4 -> 3 -> 2 -> 1 -> 5
第四步:将cur节点下一个节点删除,在添加到第m个位置 5 -> 4 -> 3 -> 2 -> 1
按照先删除,在添加的思路理解,很容易写出对应代码
可以看出cur节点指针始终没有变化,变化的是相对位置