确定循环长度k=k%n
确定新链表的起始位置n-k,
记pre=null, temp=head,遍历链表,获取链表长度和最后一个链表元素,在新链表中pre.next=head
新链表起始位置的前一元素.next应置空
指针置空可认为释放了内存
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode rotateRight(ListNode head, int k) {
ListNode temp=head;
ListNode orig=head;
ListNode res=head;
ListNode tail=null;
int len=0;
while(temp!=null){
len++;
tail=temp;
temp=temp.next;
}
if(len==0) return head;
k%=len;
if(k==0) return head;
ListNode preU=null;
int i=0;
while(i<(len-k)){
if(i==(len-k-1))
preU=orig;
orig=orig.next;
i++;
}
if(tail!=null) tail.next=res;
if(preU!=null) preU.next=null;
return orig;
}
}