LeetCode反转链表使用JavaScript解题|前端学算法

简介: LeetCode反转链表使用JavaScript解题|前端学算法

反转链表


给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。

示例 1:


image.png


输入: head = [1,2,3,4,5]

输出: [5,4,3,2,1]

示例 2:

image.png

输入: head = [1,2,3,4,5]

输出: [5,4,3,2,1]


解题思路


反转链表就是将当前节点的 next 指针改为指向前一个节点。所以我们只需要将链表的头部指向null,第一个节点的next指向head,第二个节点的next指向第一个节点这样一次类推,我们可以用一个变量 current存储当前节点;pre用来存储上一个节点,这样依次修改节点的next指向,直到当前节点为空

拆分为如下步骤:

  • 第一步:初始化上一个节点pre为空;将头结点赋值给当前节点current
  • 第二步:当当前节点有值时进入循环:循环内主要是修改next指向
  • 获取当前节点的下一个节点 next
  • 令当前节点指向 上一个节点pre
  • 当前节点变成上一个节点
  • 下一个节点 变成当前节点;开始再次操作当前节点,修改当前节点的指向
  • 第三步:经过循环后,pre就变成了头结点,所以返回pre


image.png


image.png


var reverseList = function(head) {
    let pre = null
    let current = head
    while(current !== null){
        let next = current.next // 下一个节点
        current.next = pre
        pre = current
        current = next
    }
    return pre
};


image.png


知识点


链表是一种与数组类似的线性数据结构,但与数组的元素存储在特定的内存位置或索引中不同,链表的每个元素都是独立的对象,它包含一个指向该列表中下一个对象的指针或链接。

链表的主要操作就是修改链表的指向



目录
相关文章
|
11月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
109 0
|
11月前
|
人工智能 自然语言处理 程序员
通义灵码:融合创新玩法与探索,重塑LeetCode解题策略
欢迎来到工程师令狐小哥的频道。本文介绍如何利用AI工具高效刷LeetCode,通过通义灵码插件在IntelliJ IDEA中实现代码生成、优化、单元测试等功能,提升编程学习效率。
404 1
通义灵码:融合创新玩法与探索,重塑LeetCode解题策略
|
10月前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
210 4
|
11月前
|
算法 C++
【算法解题思想】动态规划+深度优先搜索(C/C++)
【算法解题思想】动态规划+深度优先搜索(C/C++)
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
183 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
11月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
495 0
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
149 6
|
前端开发 JavaScript C++
详解链表在前端的应用,顺便再弄懂原型和原型链!
该文章深入解析了链表在前端开发中的应用,并详细阐述了JavaScript中的原型和原型链的概念及其工作原理。
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
149 2
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
151 1

热门文章

最新文章