题目来源:
力扣61-旋转链表
题目描述:
思路:双指针
因为它倒得永远是倒数k个
class Solution {
public ListNode rotateRight(ListNode head, int k) {
ListNode slow=head,fast=head,len=head;
int l=0;
//1 求长度
while(len!=null){
l++;
len=len.next;
}
if(l==0){
return head;
}
//大于链表长度的是一样的
k=k%l;
//1.1先找到k的位置:
while(k>0){
fast=fast.next;
k--;
}
//1.2 快慢指针同行 直到最后一个节点
while(fast.next!=null){
fast=fast.next;
slow=slow.next;
}
//1.3末尾节点相接
fast.next=head;
ListNode value=slow.next;
//断开链表
slow.next=null;
//1.4返回慢指针的下一个节点
return value;
}
}