61-旋转链表

Posted nxnslc-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了61-旋转链表相关的知识,希望对你有一定的参考价值。

要点:

1、计算旋转的次数rot=k%len

2、链表尾部要链接头部构成循环条件,才能输出完整的循环链表

3、在头部放指针分别遍历一定次数,寻找到头尾,再将尾部链接下一个元素断开又形成了单链表。

技术图片
 1 public ListNode rotateRight(ListNode head, int k) {
 2     if(head==null||k==0){
 3         return head;
 4     }
 5     ListNode cursor=head;
 6     ListNode tail=null;//尾指针
 7     int length=1;
 8     while(cursor.next!=null)//循环 得到总长度
 9     {
10         cursor=cursor.next;
11         length++;
12     }
13     int loop=length-(k%length);//得到循环的次数
14     tail=cursor;//指向尾结点
15     cursor.next=head;//改成循环链表
16     cursor=head;//指向头结点
17     for(int i=0;i<loop;i++){//开始循环
18         cursor=cursor.next;
19         tail=tail.next;
20     }
21     tail.next=null;//改成单链表
22     return cursor;//返回当前头
23 }
View Code

 

以上是关于61-旋转链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 61. 旋转链表 c++/java详细题解

LeetCode 61. 旋转链表

LeetCode:旋转链表61

「LeetCode」61. 旋转链表

「LeetCode」61. 旋转链表

LeetCode:61.旋转链表(python3)