力扣刷题61-旋转链表

题目来源:
力扣61-旋转链表
题目描述:
在这里插入图片描述
力扣刷题61-旋转链表_第1张图片
思路:双指针
因为它倒得永远是倒数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;
    }
}

你可能感兴趣的:(leetcode,链表,算法)