前言
上期,小莱给大家分享了利用双指针定位删除节点及尾节点位置的方法(见《图解:删除链表倒数第N个节点》)。这期,小莱继续给大家分享一道利用双指针处理的链表拓展题。
题目:
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入:1->2->3->4->5->NULL, k = 2
输出:4->5->1->2->3->NULL
解释:
向右旋转 1 步:5->1->2->3->4->NULL
向右旋转 2 步:4->5->1->2->3->NULL
示例 2:
输入:0->1->2->NULL, k = 4
输出:2->0->1->NULL
解释:
向右旋转 1 步:2->0->1->NULL
向右旋转 2 步:1->2->0->NULL
向右旋转 3 步:0->1->2->NULL
向右旋转 4 步:2->0->1->NULL
画外音:Leetcode第61题,中等/难度,通过率40.6% !!!
先分段后连接
下图为链表分别向右旋转2、3、4个位置后的情况。