题解 | #链表内指定区间反转#

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节点指针始终没有变化,变化的是相对位置
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务