题目内容
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
示例
示例 1:
输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
示例 2:
输入:head = [5], left = 1, right = 1
输出:[5]
提示
1、链表中节点数目为 n
2、1 <= n <= 500
3、-500 <= Node.val <= 500
4、1 <= left <= right <= n
题解
本题考查链表的操作,因此采用画图的思路求解最方便,模拟一下这个过程然后敲代码就行了。
具体思路就如下图所示:
1、首先,获得left指针的节点和right指针的节点以及left指针前一个节点
2、然后将left和right内部的指针指向翻转
3、然后将left前一个节点指向right,将left的下一个节点指向right的下一个节点
这里注意:引入虚拟头结点用来统一头结点与其他节点的操作,使其操作保持一致。
代码
/** |