Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.
解法1:Two pointers, O(N)
这题考的是Linkedlist的基本操作。可以容易看到只要把最后k个元素作为字串挪到list的头部即可。
实际操作可以维护两个指针,同时向右移动,让左指针指向新的头部,右指针指向衔接的地方。
要注意的操作就是k可能会大于linkedlist的长度,那么需要多一个取余操作。
还有对输入的数据范围也需要进行判断,NULL linkedlist直接返回,取余后为0的k也直接返回原list。
C++
Java