欢迎订阅《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/天
各位的点赞、