LeetCode-206. 反转链表

news2024/11/19 13:19:04

目录

    • 双指针
    • 递归

题目来源
206. 反转链表

双指针

定义两个指针: pre 和 cur;pre 在前 cur 在后。
每次让 cur 的 next 指向 pre,实现一次局部反转
局部反转完成之后,pre 和 cur 同时往前移动一个位置
循环上述过程,直至 cur 到达链表尾部

在这里插入图片描述

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null){
            return null;
        }
        ListNode pre = null;
        ListNode cur = head;
        while(cur != null){
            ListNode temp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = temp;
        }
        return pre;
    }
}

在这里插入图片描述

递归

输入一个节点 head,将「以 head 为起点」的链表反转,并返回反转之后的头结点。
在这里插入图片描述
那么输入 reverse(head.next) 后,会在这里进行递归:

ListNode last = reverse(head.next);

在这里插入图片描述
这个 reverse(head.next) 执行完成后,整个链表就成了这样:
在这里插入图片描述
reverse 函数会返回反转之后的头结点,我们用变量 last 接收了。
现在再来看下面的代码:

head.next.next = head;

在这里插入图片描述
接下来

head.next = null;
return last;

在这里插入图片描述
递归函数要有 base case,也就是这句:

if (head.next == null) return head;

意思是如果链表只有一个节点的时候反转也是它自己,直接返回即可。

代码实现

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null){
            return null;
        }
        if(head.next == null){
            return head;
        }
        ListNode last = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return last;
    }
}

在这里插入图片描述

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

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

相关文章

AWS S3 跨账号迁移

目录 **迁移架构:****具体实施:****1. 在目标账号创建策略(S3MigrationPolicy)和角色(S3MigrationRole)****2. 安装 aws cli,并配置$ aws configure,**[请参阅 AWS CLI 文档中的安装…

C++回调函数

回调函数 文章目录 回调函数一、函数指针二、回调函数应用Reference 一、函数指针 指针是一个变量,是用来指向内存地址。 一个程序运行时,所有和运行相关的东西都需要加载到内存当中,因此可以通过指针指向该内存。 函数是存放在内存代码区…

Otter CTF--Network(web网络1-3)

目录 一.题目 1.Birdmans Data 2.Look At Me 3.Otter Leak 一.题目 网址 OtterCTF 1.Birdmans Data 下载文件: .pcap文件 Wireshark打开: 既然是web 我们就从http分析: 追踪流 HTTP流: 发现两个密钥key: {"…

数据集 | 基于语音(Speech)/多模态(Multimodal)的情绪识别数据集,格式及下载

本文主要介绍了一些常用的语音🗣识别数据集,文件格式以及下载地址: 目录 1.IEMOCAP Emotion Speech Database(English) 2.Emo-DB Database(German) 文件命名 对象 3.Ryerson Audio-Visual Database of Emotional Speech and Song (Engli…

解密JS代码:一个有趣的故事

作为一名前端开发者,我们经常需要处理加密和解密的任务。近日,我遇到了一个有趣的故事和一个需要解密的JavaScript代码。让我和你分享一下这个故事以及我是如何解密这段代码的。 最近我收到了一个任务,要将一个网站上的一段JavaScript代码进…

torch_geometric获取datasets(解决连不了外网的问题)

文章目录 1. torch_geometric.data介绍2. 使用Planetoid下载Cora数据集的代码3. 解决程序运行的机器无法联网的问题3.1 尝试运行,查看数据集下载链接3.2 放置到对应文件夹下3.3 重新运行之前写的程序 4. 一点感慨 1. torch_geometric.data介绍 torch_geometric&…

进货商模式玩法解析:当老板、亲自进货、自己赚差价?

如今很多人都看到互联网的发展前景,有了创业的想法,但是资金、技术、市场等问题给他们带来了瓶颈。进货商模式的出现,为这些(文章编辑ycy6221)有创业想法,有梦想的人打破了这些限制,而且还可以实…

HTTP协议演进:为什么说HTTP/1.1的时代已经过去了

前言 欢迎来到今天的每日一题,每日一提。昨天聊到了,HTTP 是什么。有哪些组成部分。并且最后提到了 HTTP 的一些缺点,比如:性能较低,容易导致网络拥塞和延迟,不支持服务器推送等等。设计协议的大佬们&#…

ChatGPT实现安全漏洞检查

安全漏洞检查 几乎每一项新技术的出现,都会首先被运用在安全领域,ChatGPT 也不例外。在 ChatGPT 出现的第一时间,利用 ChatGPT 编写钓鱼邮件,进行社会工程学攻击,辅助分析代码漏洞等等就成为热门话题。其实技术只是工…

快速上手Vite 配置指南

💂 个人网站:【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】 文章最后有作者l联系方式(备注进群) 1.认识vite 什么是vite呢? 官方的定位:下一代前端…

《水经注地图服务》数据源说明

(本文首发于“水经注GIS”公号,关注公号免费领取地图数据) 《水经注地图服务》(WeServer)是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品,该产品完全遵循OGC相关协议标准,是一个…

老板给情人转166万,妻子起诉后追回,网友:这是被白嫖三年

作为一个已婚男人,戚某在婚姻关系中背离了对妻子的忠诚,与小自己14岁的女员工小汪发展出不正当的男女关系。而小汪,在明知对方已婚的情况下,仍然选择继续纠缠,最终付出了惨痛的代价。 据了解,戚某在上海经营…

会议签到二维码制作教程

纸质签到表、人工逐一核对等传统的会议签到方式,存在着耗时耗力、容易出错、不环保等种种弊端。 可以制作一个包含签到表单的签到二维码,参会人员使用微信扫码签到,自动授权填写手机号、定位等信息,管理人员在小程序以及电脑端实…

【团购-自己实现代理 Objective-C语言】

一、我们上节课,实现了数据加载,下面是不是有个加载更多啊, 1.我们先把这个“加载更多”给大家做一下, 这个加载更多,注意看,因为这个加载更多,是显示在UITableView的最底部的, 它会随着UITableView一起滚动吧, 证明,它是在UITableView的tableFooterView里面显示的…

Linux系统中tar.gz与rpm结尾的文件在安装程序时究竟有什么不同?

tar.gz tar.gz就是一个压缩包! 使用的时候需要使用tar命令配上一些参数来进行解压。 关于tar的使用,大家可以参考这篇博客,这位大佬写的很详细。 Linux tar命令详解 在解压完后,这就是一个独立的文件,里面包含着关…

第十五章_Redis与MySQL数据双写一致性工程落地案例

复习面试题 采用双检加锁策略 多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。 其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。 后面的线程进来发现已经…

Redis内幕揭秘:探索Redis基础知识及应用场景,挖掘出高效的缓存技术

Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是 Redis 的发展史: 2009 年:Salvatore Sanfilippo 开始编写 Redis。2010 年:Redis 发布了 1.0 版本。这个版本包含了许多常用的数据结构&…

在陌生人社交场景 挖呀挖呀挖……

在陌生人社交场景 挖呀挖呀挖, 找可靠的大品牌(网易),享最优惠的价~ 😄 对于“深挖”娱乐社交领域需求的开发者来说,陌生人社交是毋庸置疑最受青睐的场景。尤其是对渴望交流、敢于表达自我的年轻人来说&…

10-HTML-表单标签

标签描述<form>定义供用户输入的 HTML 表单。<input>定义输入控件。<textarea>定义多行的文本输入控件。<button>定义按钮。<select>定义选择列表&#xff08;下拉列表&#xff09;。<optgroup>定义选择列表中相关选项的组合。<option&…

【Rust日报】2023-05-10 llm - 使用Rust在CPU上运行大模型

llm - 使用Rust在CPU上运行大模型 这是一套工具。目前支持这些模型&#xff1a; GPT-2GPT-JLLaMA: LLaMA, Alpaca, Vicuna, Koala, GPT4All v1, GPT4-X, WizardGPT-NeoX: GPT-NeoX, StableLM, Dolly v2 (partial, not the same tensor names?)BLOOM: BLOOMZ https://github.co…