LeetCode 61. 旋转链表
原题链接
中等
作者:
LangB
,
2020-11-02 22:09:14
,
所有人可见
,
阅读 241
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if (head == null || head.next == null) {
return head;
}
ListNode p = head;
int len = 1;
// 计算链表的长度,并获取尾结点
while (p.next != null) {
p = p.next;
len++;
}
k %= len;
// 当k为0时,不需要进行下面步骤
if (k == 0) {
return head;
}
// 将尾节点指向头节点
p.next = head;
// 找到新链表的头节点的前一个节点
for (int i = 0; i < len - k; i++) {
p = p.next;
}
ListNode newHead = p.next;
p.next = null;
return newHead;
}
}