题目描述[原题链接][https://leetcode-cn.com/problems/rotate-list/]
给定一个链表,旋转链表,将链表每个节点向右移动 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
算法描述
要求将链表中的每一个节点向右移k个位置,可以优化为,先找到链表尾的位置,将尾部和头部连起来成为一个环,将移动的k
位对链表长度取模,找到最后链表的头部,把环断开,返回新的链表就可以了;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |