题目
题解
步骤:统计链表节点数目n -> 链表首尾相连 -> 新链表末尾断链
新链表最后一个节点是原链表中第 (n-1)-(k%n) 个节点
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(k==0||head==null||head.next==null)
return head;
ListNode p=head;
//统计链表节点数目
int n=1;
while(p.next!=null){
p=p.next;
n++;
}
//新链表末尾序号
int add=n-k%n;
if(add==n)
return head;//向右挪n个链表不变,返回
//首尾相连
p.next=head;
//新链表末尾断链
while(add>0){
p=p.next;
add--;
}
ListNode res=p.next;
p.next=null;
return res;
}
}
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)