<LeetCode天梯>Day026 反转链表(递归法+(迭代法)双链表法) | 初级算法 | Python

简介: <LeetCode天梯>Day026 反转链表(递归法+(迭代法)双链表法) | 初级算法 | Python

以下为我的天梯积分规则:


每日至少一题:一题积分+10分

若多做了一题(或多一种方法解答),则当日积分+20分(+10+10)

若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60)


初始分为100分

若差一天没做题,则扣积分-10分(周六、周日除外注:休息)

坚持!!!


初级算法

刷题目录

链表


image.png

image.png

题干

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

示例1:

image.png

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

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


示例2:

image.png


输入:head = [1,2]

输出:[2,1]


示例3:


输入:head = []

输出:[]


提示:


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

-5000 <= Node.val <= 5000

递归法

分析:


首先看到这题干,是不是很熟悉,不就是反转排序嘛,说搞就搞!!!可以想到的有递归法、迭代法进行反转操作,我们先来实现递归,然后再实现迭代。


关于递归这里提一两点:


递归基本有这几步递归的模板,1.终止条件,2.递归调用,3.逻辑处理。

这里引用下大佬的基本思路:

image.png

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        # # 递归终止条件:链表为空,或者是链表没有尾结点的时候,直接返回
        if head == None or head.next == None:
            return head
        next = self.reverseList(head.next)    # 保存当前节点的下一个节点
        head.next.next = head
        # next.next = head
        head.next = None
        return next

image.png

(迭代法)双链表法

双链表求解是把原链表的结点一个个摘掉,每次摘掉的链表都让他成为新的链表的头结点,然后更新新链表。

再次借用下大佬的图片

image.png

直接上代码了吧就!

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
         # 双链表法
        new_link = None
        while head:    # 判断是否为空字符,如果非空则运行下面的
            # 保存当前节点的下一个节点
            next = head.next
            # 将当前节点指向前一个节点
            head.next = new_link
            # 上一个节点指向当前节点,再次循环中会被当成上一个值
            new_link = head
            # 头节点指向下一个节点
            head = next
        return new_link

image.png


相关文章
|
2月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
2月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
140 5
|
3月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
201 26
|
3月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
352 4
|
3月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
516 4
|
3月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
206 0
|
3月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
249 0
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
260 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
198 2
|
3月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
224 3

推荐镜像

更多