欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > LeetCode 61. 旋转链表

LeetCode 61. 旋转链表

2025/9/28 5:46:41 来源:https://blog.csdn.net/qq_52127701/article/details/142095853  浏览:    关键词:LeetCode 61. 旋转链表

题目描述


分析

grq:关于链表结点的修改顺序:改前先用,用后就改。
将每个结点向右移动k个位置,实际上就是将后k个结点连接到头部。这道题目是不需要dummy结点的。整体分析如下:
在这里插入图片描述

首先要获得整个链表也是后k个结点的尾结点。由于整个是n个结点,除掉后k个结点后还有n-k个结点,要修改指针首先要跳到倒数第k+1个结点(正数第n-k个结点),从第一个结点跳n-k-1次就可以到达。之后就是指针的修改:

  • 尾结点指向头结点
  • 倒数第k个变为新的头结点
  • 倒数第k+1(正数第n-k)个结点变为尾结点指向null,

代码(Java)
class Solution {public ListNode rotateRight(ListNode head, int k) {if (head == null) return head;ListNode tail = head;// 先求出链表长度int n = 1;while (tail.next != null) {n ++;tail = tail.next;}k %= n;if (k == 0) return head;ListNode cur = head;// 倒数第k+1个结点成了尾结点for (int i = 0; i < n - k - 1; i ++) cur = cur.next;tail.next = head;head = cur.next;cur.next = null;return head;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词