Given a linked list, rotate the list to the right by k places, where k is non-negative.
Example 1:
Input: 1->2->3->4->5->NULL, k = 2
Output: 4->5->1->2->3->NULL
Explanation:
rotate 1 steps to the right: 5->1->2->3->4->NULL
rotate 2 steps to the right: 4->5->1->2->3->NULL
Example 2:
Input: 0->1->2->NULL, k = 4
Output: 2->0->1->NULL
Explanation:
rotate 1 steps to the right: 2->0->1->NULL
rotate 2 steps to the right: 1->2->0->NULL
rotate 3 steps to the right: 0->1->2->NULL
rotate 4 steps to the right: 2->0->1->NULL
思路:
1、重复逆转、k值有可能会大于list的长度
2、先遍历list,得出list的长度len
3、如果k%len == 0 、则等于原来的list、直接return head
4、得出切割的point = len - k%len
5、将p遍历到切割的point的前一个节点、将list切割成两个链表right.next = p.next
6、将原来的切割点赋值为空、p.next = null
7、并将right链表连接上head、即可return right.next