美文网首页
61.旋转链表

61.旋转链表

作者: 最尾一名 | 来源:发表于2020-02-29 18:09 被阅读0次

原题

https://leetcode-cn.com/problems/rotate-list/

解题思路

分析题意,整个链表向右移动 k 位,等价于:一个首位首尾相连的链表,长度为 len, 某个指针指向 head,将其从 head 前 k + 1 位断开,以 head 前 k 位为新的链表头。

代码

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} k
 * @return {ListNode}
 */
var rotateRight = function(head, k) {
    if (!k || !head) return head;
    let len = 1, prev = head;
    // 统计链表长度
    while (prev.next) {
        prev = prev.next;
        ++len;
    }
    prev.next = head;
    const offset = len - (k % len);
    for (let i = 0; i < offset; ++i) {
        prev = prev.next;
    }
    const dump = prev.next;
    prev.next = null;
    return dump;
};

复杂度

  • 时间复杂度 O(N)
  • 空间复杂度 O(1)

相关文章

  • leetcode 链表 [C语言]

    21. 合并两个有序链表 合并两个有序链表 61. 旋转链表 (快慢指针) 61. 旋转链表 相关标签 : 链表 ...

  • 61. 旋转链表

    61. 旋转链表 问题 给定一个链表,旋转链表,将链表每个节点向右移动 个位置,其中 是非负数。 示例 1: 输...

  • [LeetCode]61. 旋转链表

    61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例:输入: 1-...

  • 61. 旋转链表

    61. 旋转链表 双指针,一个先走k步

  • 【D33】旋转链表 (LC61)

    61. 旋转链表[https://leetcode-cn.com/problems/rotate-list/] 给...

  • LeetCode:61. 旋转链表

    问题链接 61. 旋转链表[https://leetcode-cn.com/problems/rotate-lis...

  • 61.旋转链表

  • 61.旋转链表

    题目给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1:输入: 1->2-...

  • 61. 旋转链表

    思路 找到旧的尾部并将其与链表头相连 old_tail.next = head,整个链表闭合成环,同时计算出链表的...

  • 61. 旋转链表

    题目描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 解法

网友评论

      本文标题:61.旋转链表

      本文链接:https://www.haomeiwen.com/subject/imdmhhtx.html