竹笋

首页 » 问答 » 灌水 » leetcode刷题18反转链表
TUhjnbcbe - 2023/9/30 16:27:00

欢迎订阅《ltcod》专栏,每日一题,每天进步

有点绝望。没刷过算法,我发现基本的迭代都想不出来,贼打击,而且看了答案,要自己理解记住感觉过段时间就会忘那种。害。怀疑人生

——ltcod此题热评

前言

哈喽,大家好,我是一条。

糊涂算法,难得糊涂

这是一道超级经典的题目,大家要好好做哦!

Qustion

06.反转链表

难度:简单

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

示例1:

输入:had=[1,,3,,5]输出:[5,,3,,1]

示例:

输入:had=[1,]输出:[,1]

示例3:

输入:had=[]输出:[]

提示:

链表中节点的数目范围是[0,]-=Nod.val=

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

Solution

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

先实现局部替换,从而全部替换,可以用迭代或者递归实现。利用栈先进后出的特点,实现反转

本文主要讲解迭代法

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

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

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

Cod

所有ltcod代码已同步至github

欢迎star

/***

authoryitiaoIT*/classSolution{publicListNodvrsList(ListNodhad){ListNodpv=null;ListNodcurr=had;whil(curr!=null){ListNodnxt=curr.nxt;curr.nxt=pv;pv=curr;curr=nxt;}turnpv;}}

Rsult

复杂度分析

时间复杂度:O(N)

寻宝

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

各位的点赞、

1
查看完整版本: leetcode刷题18反转链表