欢迎光临散文网 会员登陆 & 注册

LeetCode-061-旋转链表

2021-10-06 10:21 作者:雄狮虎豹  | 我要投稿

旋转链表

题目描述:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例说明请见LeetCode官网。

来源:力扣(LeetCode)   

链接:https://leetcode-cn.com/problems/rotate-list/   

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:双指针法

  • 首先,如果head为null或者head只有一个节点,直接返回head;

  • 遍历链表head得到链表的长度为length,根据k % length算得toJump,toJump为实际需要多少位挪到链表前面,如果toJump为0,说明旋转后不需要挪动,直接返回head,如果toJump大于0,则初始化2个节点first和last分别指向头结点,然后利用双指针法,得到需要挪的最后几位,具体处理过程如下:

    • 首先将last移动到链表的第toJump位;

    • 然后同时移动first和last节点,直到last的next不为空为止。

  • 最后移动到last的next为空,此时last即为原链表的最后一个节点,first的next节点为新的头结点,此时,初始化newHead为first的next节点,然后将first的next置空,first为新链表的最后一个节点,然后将last指向原链表的头结点head,最后返回newHead即为旋转后的链表。

【每日寄语】 只要你今天再多努力一下,那个未来可以像星星一样闪闪发光的人就是你呀!



LeetCode-061-旋转链表的评论 (共 条)

分享到微博请遵守国家法律