图解:如何旋转链表

前言

上期,小莱给大家分享了利用双指针定位删除节点及尾节点位置的方法(见《图解:删除链表倒数第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个位置后的情况。

图解:如何旋转链表_第1张图片

图解:如何旋转链表_第2张图片

你可能感兴趣的:(数据结构,链表,后端,算法)