美文网首页LeetcodeLeetCode算法
JS优雅实现反转一个单链表

JS优雅实现反转一个单链表

作者: Mr_Alpha | 来源:发表于2018-03-11 11:41 被阅读14次

Reverse Linked List
反转一个单链表。
LeetCode连接:https://leetcodechina.com/problems/reverse-linked-list/description/

使用递归的方式。

优势:

  1. 借用JS强大的闭包功能
  2. 只需遍历一遍链表

缺点:
递归的缺点:占空间

思路:

  1. 递归的基线条件:遍历到末节点(node.next === null)
  2. 递归的递归条件:node.next !== null
  3. 当遇到末节点时,返回末节点,前一节点接收末节点,并把末节点的next设置为自身,返回前一节的,继续下去
  4. 考虑特殊情况:undefined和null

直接贴代码:

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function (head) {
    // 闭包
    if (head === undefined || head === null) return null
    var originalHead = head
    var reverseHead
    var reverse = function (head) {
        if (head.next === null) {
            reverseHead = head
            return head
        } else {
            var node = reverse(head.next)
            node.next = head
            if (originalHead === head) {
                head.next = null
                return reverseHead
            } else {
                return head
            }
        }
    }
    return reverse(head)
};

运行时间如下,小于100ms:


image.png

相关文章

  • JS优雅实现反转一个单链表

    Reverse Linked List反转一个单链表。LeetCode连接:https://leetcodechi...

  • 单链表反转

    单链表反转 单链表初始化 输出 反转 释放 实现代码 尚未实现 元素插入 元素删除

  • 链表简单算法相关练习

    单链表反转: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 迭代方式实现: 复杂度分析: 时...

  • 反转单链表Java实现

    问题描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 解题思路 为了实现反转单链表,...

  • LeetCode链表专题

    (一)LeetCode206.反转链表 题目描述: 反转一个单链表。 代码实现 (二)LeetCode160. 相...

  • 单链表反转问题

    基本问题 如何将单链表反转? 单链表结构定义 算法实现 进阶问题 如何将单链表在指定区间内进行反转? 问题分析 这...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

  • LeetCodeDay12 —— 反转链表&合并两个有序链表

    206. 反转链表 描述 反转一个单链表。 进阶 链表可以迭代或递归地反转。你能否两个都实现一遍? 思路 迭代版本...

  • Python编程题44--反转链表

    题目 给定一个单链表的头节点 head ,请实现反转链表,并返回反转后的链表。 例如:原链表转换为列表:[1, 2...

  • python单链表反转

    使用python实现单链表反转,核心就是当前cur游标和下一个链表节点。 初始化当前cur节点和反转链表 temp...

网友评论

    本文标题:JS优雅实现反转一个单链表

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