当前位置: 首页 > news >正文

206. 反转链表

目录

  • 一、题目
  • 二、思路
    • 2.1 解题思路
    • 2.2 代码尝试
    • 2.3 疑难问题
    • 2.4 AI复盘
  • 三、解法
  • 四、收获
    • 4.1 心得
    • 4.2 举一反三

一、题目


在这里插入图片描述

二、思路


2.1 解题思路

需要有头尾指针,然后又觉得可以用递归

2.2 代码尝试

class Solution {
public:
    ListNode* reverseList(ListNode* head) {

        ListNode* p=head;
        //尾指针
        ListNode* tail=new ListNode(0);

        //把每一个节点拆下来之后,依次从前接上

        //首节点跟null,其他依次连接首节点
        while(head){
            p=head;
            p->next=tail;
            tail=p;
            head=head->next;

        }
        return p;

    }
};

2.3 疑难问题

2.4 AI复盘

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* prev = nullptr;  // 用于存储前一个节点
        ListNode* curr = head;    // 当前节点

        while (curr != nullptr) {
            ListNode* nextTemp = curr->next;  // 保存下一个节点
            curr->next = prev;               // 反转当前节点的指针
            prev = curr;                      // 移动prev到当前节点
            curr = nextTemp;                  // 移动curr到下一个节点
        }

        return prev;  // prev最终指向反转后的头节点
    }
};

正确更新指针:在反转链表时,你需要先保存当前节点的下一个节点(nextTemp),然后将当前节点的 next 指针指向前一个节点(prev),最后更新 prev 和 curr 指针。

三、解法


class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (!head || !head->next) {
            return head;
        }
        ListNode* newHead = reverseList(head->next);
        head->next->next = head;
        head->next = nullptr;
        return newHead;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

四、收获


4.1 心得

不仅要存储先前的节点,还要存储后面的节点。
递归的精髓就是,它能够做到反向遍历,因为在顺序表中,反向遍历很简单,只有i–就行了,链表的反向遍历用递归,就是每次都会从尾部向前就行操作。

4.2 举一反三

相关文章:

  • 施磊老师c++(七)
  • 【人工智能基础2】Tramsformer架构、自然语言处理基础、计算机视觉总结
  • DeepSeek进阶应用(二):结合Kimi制作PPT(双AI协作教程)
  • ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术
  • 过滤空格(信息学奥赛一本通-2047)
  • 我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成
  • 上位机数据可视化:使用QtCharts绘制波形图
  • STM32 - 在机器人领域,LL库相比HAL优势明显
  • 电磁兼容性|电子设备(EMC)测试与系统化整改
  • HarmonyOS NEXT个人开发经验总结
  • 爬虫获取 item_get_video 接口数据:小红书笔记视频详情的深度解析
  • 鸿蒙 @ohos.arkui.drawableDescriptor (DrawableDescriptor)
  • 为训练大模型而努力-分享2W多张卡通头像的图片
  • Symbian(塞班)操作系统
  • python+MySQL+HTML实现自习室座位管理系统
  • 大模型微调01-使用transforms进行lora微调
  • 关于离子滤波小记
  • 34个适合机械工程及自动化专业【论文选题】
  • 【计算机网络】2物理层
  • Day26 洛谷真题讲解(递推)(背包问题)
  • 推广qq群的网站/google play store
  • 深圳网站建设团队/如何创建一个自己的网站
  • 购物网站建设流程/专业的网页制作公司
  • 广东人才网官方网站招聘信息/国外网站如何搭建网页
  • 自己电脑做服务器搭建网站有域名/凤山网站seo
  • wordpress代码主题/怎么把网站排名优化