解题思路:
就是修改一下链表结点之间的连接关系
刚开始耗时快300ms…因为要求k相对链表长度的绝对大小的时候我是这么写的:
while(k>=len) k-=len;
其实直接k%=len; 就可以了,把这里改过来就不会耗时太久了
提交代码:
class Solution{
public ListNode rotateRight(ListNode head, int k) {
if(head==null||head.next==null||k==0) return head;
int len=1;
ListNode p1=head;
// find the length of the list
while(p1.next!=null) {
len++;
p1=p1.next;
}
k%=len;
if(k==0) return head;
p1=head;
for(int i=0;i<len-k-1;i++)
p1=p1.next;
ListNode ans=p1.next;
p1.next=null;
p1=ans;
for(int i=1;i<k;i++)
p1=p1.next;
p1.next=head;
return ans;
}
}
运行结果: