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.
需要两个指针 一个j指向5一个i指向3
所以起始的时候i指向1 j指向3 即走k步
public ListNode rotateRight(ListNode head, int k) {
if(head == null) return null;
ListNode iNode = head;
ListNode jNode = head;
int length;
for(length = 0;iNode != null;length++)
iNode = iNode.next;
iNode = head;
k = k % length;
if(k == 0) return head;
for(int i = 0;i < k ;i++){
if(jNode.next != null)jNode = jNode.next;
else jNode = head;
}
while(jNode.next != null){
iNode = iNode.next;
jNode = jNode.next;
}
jNode.next = head;
head = iNode.next;
iNode.next = null;
return head;
}