【刷算法】翻转单链表的递归和非递归方法

简介: 【刷算法】翻转单链表的递归和非递归方法

题目描述


输入一个链表,反转链表后,输出新链表的表头。


分析


典型的面试题以及大学数据结构课程常见题,没啥好分析的了...


代码实现


递归版


function ListNode(x){
    this.val = x;
    this.next = null;
}
function ReverseList(h)
{
    if(h === null || h.next === null)
        return h;
    var reversedHead = ReverseList(h.next);
    h.next.next = h;
    h.next = null;
    return reversedHead;
}
复制代码

非递归版

function ListNode(x){
    this.val = x;
    this.next = null;
}
function ReverseList(h)
{
    if(h === null || h.next === null)
        return h;
    var pre = null;
    var cur = h;
    while(cur !== null) {
        var next = cur.next;
        cur.next = pre;
        pre = cur;
        cur = next;
    }
    return pre;
}


相关文章
|
17天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
10天前
|
存储 算法
【软件设计师】常见的算法设计方法——递推法
【软件设计师】常见的算法设计方法——递推法
|
17天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
32 0
|
10天前
|
算法
【软件设计师】常见的算法设计方法——穷举搜索法
【软件设计师】常见的算法设计方法——穷举搜索法
|
10天前
|
机器学习/深度学习 监控 算法
【软件设计师】常见的算法设计方法——迭代法
【软件设计师】常见的算法设计方法——迭代法
|
17天前
|
算法
【免费】基于SOE算法的多时段随机配电网重构方法
【免费】基于SOE算法的多时段随机配电网重构方法
|
17天前
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。
|
17天前
|
编解码 算法 数据可视化
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
|
17天前
|
机器学习/深度学习 存储 人工智能
一阶优化算法启发,北大林宙辰团队提出具有万有逼近性质的神经网络架构的设计方法
【4月更文挑战第19天】北京大学林宙辰团队在深度学习领域取得突破,提出基于一阶优化算法的神经网络设计方法,构建具有万有逼近性质的模型,提升训练速度和泛化能力。该方法利用一阶导数信息,高效处理大规模问题。虽然面临非光滑优化和收敛速度挑战,但团队通过正则化和自适应学习率等策略进行改进,相关研究在多个标准数据集上表现出色。
20 1
|
17天前
|
存储 算法
单链表——“数据结构与算法”
单链表——“数据结构与算法”