【leetcode刷题】18.反转链表——Java版

简介: ⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐有点绝望。没刷过算法,我发现基本的迭代都想不出来,贼打击,而且看了答案,要自己理解记住感觉过段时间就会忘那种。害。怀疑人生——leetcode此题热评

Question

206. 反转链表

难度:简单

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

示例 1:

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

示例2:

输入:head = [1,2]
输出:[2,1]

示例3:

输入:head = []
输出:[]

提示:


链表中节点的数目范围是 [0, 5000]

-5000 <= Node.val <= 5000


进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?


Solution

这道题总体来说有两种思路:


先实现局部替换,从而全部替换,可以用迭代或者递归实现。

利用栈先进后出的特点,实现反转

本文主要讲解迭代法


在遍历链表时,将当前节点的 next 指针改为指向前一个节点。


由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。


在更改引用之前,还需要存储后一个节点。最后返回新的头引用。


Code

所有leetcode代码已同步至github


欢迎star

/**
 * @author yitiaoIT
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode curr = head;
        while (curr != null) {
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
}

Result

复杂度分析

  • 时间复杂度:O(N)

73ef463dcdbdb9394a766e9606f76144.png

🌈寻宝

⭐今天是坚持刷题更文的第18/100天


⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力


⭐更多算法题欢迎关注专栏《leetcode》


为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等


怎么领取请大家自己找,寻宝游戏现在开始。


找不到可以评论留言,一条就会注意到你。


如果还不行,请私信我。

54bc192590174279ad876040029fdf12.png

相关文章
|
5月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
11月前
|
算法 Go
【LeetCode 热题100】23:合并 K 个升序链表(详细解析)(Go语言版)
本文详细解析了 LeetCode 热题 23——合并 K 个升序链表的两种解法:优先队列(最小堆)和分治合并。题目要求将多个已排序链表合并为一个升序链表。最小堆方法通过维护节点优先级快速选择最小值,;分治合并则采用归并思想两两合并链表。文章提供了 Go 语言实现代码,并对比分析两种方法的适用场景,帮助读者深入理解链表操作与算法设计。
388 10
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
413 1
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
195 1
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
150 3
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
308 0
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
181 0
LeetCode第二十四题(两两交换链表中的节点)
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
234 0
Leetcode第21题(合并两个有序链表)
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
235 0
Leetcode第十九题(删除链表的倒数第N个节点)
【LeetCode 10】142. 环形链表 II
【LeetCode 10】142. 环形链表 II
135 0

热门文章

最新文章