92. 反转链表 II
难度中等1367收藏分享切换为英文接收动态反馈
给你单链表的头指针 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
算法思路:
- 记录需要反转的子链表的两端节点的前一位置和后一位置
- 将子链表截取出来
- 反转子链表
- 连接回原链表
代码实现:
1 | public ListNode reverseBetween(ListNode head, int left, int right) { |
关于反转链表可以参考:反转链表