看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~
谁能九层台,不用累土起。
题目
给你单链表的头指针head
和两个整数left
和right
,其中left<=right
。请你反转从位置left
到位置right
的链表节点,返回反转后的链表。
示例 1:
1 | 输入:head = [1,2,3,4,5], left = 2, right = 4 |
示例 2:
1 | 输入:head = [5], left = 1, right = 1 |
提示:
- 链表中节点数目为
n
1 <= n <= 500
-500 <= Node.val <= 500
1 <= left <= right <= n
解题思路
- 找到开始反转的节点
left
,记录下反转的前驱节点con
以及反转开始的节点(也是反转部分的尾结点)tail
- 开始反转操作
- 反转到
right
,此时反转的链表最后的一个节点(也是反转部分的头结点)为pre
,后置节点cur
- 将我们一开始记录的前驱节点
con
指向pre
,反转部分的尾结点tail
指向cur
便可完成解题
解题代码
1 | var reverseBetween = function(head, left, right) { |