Description:
Given a list, rotate the list to the right by k places, where k is non-negative.
Ex:
Given 1->2->3->4->5
and k = 2
return 4->5->1->2->3
问题描述:
给一条链表,给一个非负的k值,将链表向右旋转k个地方(题目原文直译,简直不是人话)。通俗点的意思是,从链表的末尾开始,数k位,将第k位及其后半部分和剩余部分对调。也就是4->5
和1->2->3
对调。当然k可能很大,超过链表长度,那就是l-k%l 其中l为链表长度
解法一:
思路:
第一步:用快指针拿到链表的长度,最后快指针在链表的末尾
第二步:用慢指针找到第(l-n%l )的结点,准备将它后面的结点都移动到前面来。
第三步:进行旋转操作:
+ 将快指针所指的结点放在dummy结点后面(改变原来的末尾链表结点的特性)
+ 将新的表头结点放到正确的位置
+ 原来慢指针所指的结点变为链表末尾结点
Code:
/**
* Definition f