Leetcode 206. 反转链表 迭代/递归

原题链接:Leetcode 206. 反转链表

在这里插入图片描述

解法一:迭代

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {if(head==nullptr) return nullptr;ListNode* pre = nullptr;ListNode* now = head;while(now){ListNode* next = now->next;now->next = pre;pre = now;now = next;}return pre;}
};

解法二:递归

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode *head) {if(head==nullptr || head->next==nullptr) return head;// 「递」到链表末尾,拿到新链表的头节点(旧链表的尾节点)ListNode* newhead = reverseList(head->next);// 让下一个节点指向自己head->next->next = head;// 断开原来的指针head->next = nullptr;return newhead;}
};
// 链表:1 -> 2 -> 3 -> 4 -> 5
// 递归调用顺序:
// reverseList(1)
//     reverseList(2)
//         reverseList(3)
//             reverseList(4)
//                 reverseList(5)
// 5->next==nullptr,返回 5
// newhead=5,head=4, 4->next=5, 5->next = 4(反转),4->next=nullptr
// newhead=5,head=3, 3->next=4, 4->next = 3(反转),3->next=nullptr
// newhead=5,head=2, 2->next=3, 3->next = 2(反转),2->next=nullptr
// newhead=5,head=1, 1->next=2, 2->next = 1(反转),1->next=nullptr
// return  newhead=5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95387.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11新特性 | 欢迎来到现代C++的世界!

左值与右值 左值与右值的概念 可以被取地址的值为左值(left value,简称lvalue),否则为右值(right value,简称rvalue)。 常见的左值、右值例子: // >>>>>>> 左值…

因为对象装箱拆箱导致的空指针异常

今天业务突然提了个事件单,客户添加承租人一直报错,但是很奇怪,报错信息是空的二话不说,先跟API组要了接口和参数,然后看日志然鹅,这个接口并没有打印日志,只有一个e.printStackTrace()然后静下…

Rust 在 Windows 环境下交叉编译其他操作系统可执行文件的详细指南

前言:为什么需要交叉编译? 想象一下这样的场景:你在 Windows 电脑上开发了一个 Rust 程序,希望它能在 Linux 服务器上运行,或者在朋友的 macOS 电脑上测试 —— 总不能为了编译不同系统的版本,专门买一台 …

Ubuntu系统配置镜像源

要修改的文件 /etc/apt/sources.list操作步骤 1. 备份原文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2. 编辑文件 sudo nano /etc/apt/sources.list3. 清空文件内容,填入以下内容 先获取Ubuntu版本代号: lsb_release -cs然后根据版本填…

【Spring Cloud Alibaba】Sentinel(一)

【Spring Cloud Alibaba】Sentinel(一)1. 简介2. 服务雪崩1. 简介 Sentinel 是阿里巴巴开源的分布式系统的流量防护组件,主要用来做流量控制、熔断降级、系统保护。它的定位类似于 Hystrix,但更侧重在 流量治理 上。目前在微服务…

Delphi 5 操作Word表格选区问题解析

在 Delphi 5 中操作 Word 时,您遇到的 Selection.MoveDown 方法选中整行而不是仅移动一行的原因与 Word 的选择机制和单元格内部结构有关。以下是详细解释和解决方案:问题分析单元格的选区范围:当使用 .Cell(r, c).Select 选中单元格时&#…

小米fastboot不能被电脑识别但手机正常使用模式时能被电脑识别

小米手机USB连接电脑不识别解决方法 – MIUI历史版本 小米手机USB连接电脑不识别解决方法 问题经验 手机连接电脑通常会自动安装驱动,如果驱动安装失败或是电脑不能识别手机设备,可尝试下面方法。 1. 尝试换根 USB 数据线,最好是手机原…

Git 版本管理工具基本操作汇总—命令总结

通常,很多朋友在使用 Git 的时候都会直接用 IDE 中集成的插件或者自带的工具等来实现代码的拉取、提交、合并以及其他操作,当然这肯定也是可以的,但是长期这样子操作,我们就会忽略掉 Git 业务运行的底层逻辑。那么,我这…

自学嵌入式第三十三天:网络编程-UDP

一、OSI模型(open system interconnect)开放系统互联模型,分为7层应用层:为网络用户提供各种服务,例如电子邮件、文件传输等;表示层:为不同主机间的通信提供统一的数据表示形式。加密解密,压缩;…

A*(Astar)算法详解与应用

算法背景A*(A-Star)算法是一种在图形平面上,有多个节点的路径中,求出最低通过成本的算法。其历史可以追溯到早期的图搜索算法,如Dijkstra算法和贪心最佳优先搜索(Greedy Best-First Search)。是…

word删除指定页面

常规程序因为wps的 .docx 文件是基于段落和节的结构,而不是“物理页”,所以无法直接按“第几页”删除在普通程序里面无法读取到他的页码,但是在宏编程里面他能读取到页码,我们就根据宏编程来这样删除。程序会自动打开选择要删除的…

RK3568平台开发系列讲解:瑞芯微平台4G模块篇移植

更多内容可以加入Linux系统知识库套餐(教程+视频+答疑) 🚀返回专栏总目录 文章目录 一、硬件图片 二、功能宏 三、增加PID/VID 支持 3.1、usb_device_id 结构体 3.2、usb_device_id 的注册 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、硬件图片 目标: 结果…

面试 (一)

目录 1. HashMap是怎么解决冲突的 是用什么数据结构实现的 2. 为什么hashmap的初始长度为16 3. 多线程的核心参数 4. 多线程怎么工作的 5. CISCS是怎么实现的 6. JUC知识 7. C和java的区别 8. JVM底层编译的东西 9. 公平锁和非公平锁 10. 有人恶意攻击你的平台每秒发送…

计算机毕设选题:基于Python+Django的健康饮食管理系统设计【源码+文档+调试】

精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、项目介绍二…

vscode terminal远程连接linux服务器GUI图形界面

看了很多教程,不清楚具体原理,但总之自己是摸索出来了: 1.下载vcxsrv,最后双击exe程序启动: 每一步的配置如下:2.修改配置 vscode中按下“ctrlshiftp”,然后输入“Remote-SSH: Open SSH Configu…

文档外发管理产品哪个品牌强?安全与效率双优产品推荐

在企业间协作日益加深的今天,企业对文档外发管理相关产品的安全性和效率要求越来越高。无论是日常业务协作,还是跨组织数据交换,如何确保文件在传输过程中不被泄露、篡改,同时又能高效流转,成为企业IT管理的重要课题。…

【教程】2025 IDEA 快速创建springboot(maven)项目

第一步:【新建】-【module】,左边选择springboot,右边填写相关信息。第二步:选择相关依赖。第三步:删掉一些无关的文件,保持项目简洁创建springboot项目已经结束了,下面是构建项目的架构以及环境…

【小白笔记】移动硬盘为什么总比电脑更容易满?

我明明只复制了10个G的文件,为什么我的移动硬盘就满了? 大家好,我是个刚入门的小白,最近遇到了一个让我百思不得其解的问题。我把电脑里的一些文件,总共加起来也就10个G左右,心想移动硬盘还有几十个G的空位…

单独一篇云原生介绍

云原生(Cloud Native)‌不是单一技术,而是一套构建和运行应用程序的完整方法论‌,旨在充分利用云计算的优势(弹性、按需资源、分布式环境)来构建‌高韧性、可扩展、易于管理的应用‌。它的核心思想是让应用…