题目链接
英文链接:https://leetcode.com/problems/rotate-list/
中文链接:https://leetcode-cn.com/problems/rotate-list/
题目详述
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
示例 1:
1 | 输入: 1->2->3->4->5->NULL, k = 2 |
示例 2:
1 | 输入: 0->1->2->NULL, k = 4 |
题目详解
在解决链表问题前可以先画图模拟一下。本题实际上是 k 对链表长度取模后,把链表的最后 k 个结点按顺序搬到链表的头部形成一个新的链表后返回新链表的头结点。有几个小技巧如下:
- 链表为空或链表长度为 1 或 k == 0,都可以直接返回。
- k 对链表长度取模可以避免重复遍历。同样,取模后 k == 0 可以直接返回。
- 得到尾结点后,可以先把尾结点链接到头结点。之后置新链表的尾结点的 next 为 null 即可。
1 | public class LeetCode_00061 { |