反转链表的三种写法

题目链接:https://leetcode.cn/problems/reverse-linked-list/

在这里插入图片描述

方法一:循环,维护好两个节点一个前一个后

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

方法二:递归

比较难想,首先我们直接递归找到最后的头节点,这个头结点不能再动了,直接有一个.next.next就是找下一个节点,把下一个节点的下一个指向当前节点,然后当前节点下一个指空,这样子回到上一个递归的时候就可以保持头节点不变,只变化了中间的节点关系,就算head指向了空也没事,递归回去栈中还保存着head的信息不会丢失。

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

方法三:头插法(最好想的一种办法,推荐)

循序很重要,头插法首先先记录下来头节点下一个的点存起来,然后头节点指向当前节点,然后头结点的下一个下一个指向存起来的点,head继续指向下一个,head的next不能动。这里我们需要知道一个点:p.next = head,head = head.next , p.next 不会指向head.next就像变量赋值一样的道理。

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode p = new ListNode(0);
        while(head!=null){
            ListNode temp = p.next;
            p.next = head;
            head = head.next;
            p.next.next = temp;
        }
        return p.next;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信奥编程 1168:大整数加法

解析:在c中需要考虑这么几个问题,第一个是大数据的输入,第二个是大数据的存储,第三是大数据的计算方式,最后是输出。 针对上述几个问题,第一个问题,采用字符串的方式或者数组加循环的方式接收输…

Typora+PicGo+Minio搭建博客图床

文章目录 TyporaPicGoMinio搭建博客图床前言什么是图床?为什么需要图床?准备工作一、Typora二、Picgo1. 下载Picgo2. 下载node.js3. 下载minio插件 三、服务器端配置1. 添加端口到安全组2. 使用Docker安装minio3. 配置minio image-20231127175530696四、minio插件配置五、Typ…

c++_继承

🏷如被何实现一个不能被继承的类(或是继承无意义的类) 将构造函数定义成私有的就行了,即:私有化父类的构造函数 c 11 新增关键字final 修饰父类直接不能被继承 class A final {........ }🏷继承与有元 有…

Vue CLI 初体验之如何创建一个项目并打开,以及组件的简单使用案例。

目录 什么是Vue CLI? 如何使用Vue CLI 创建一个项目 1.winr 打开cmd 输入vue create 1127(1127是文件名) 2.配置基础设置 选择Manually select features 选择Router和Vuex 选中vue版本(我这里选vue3) 剩下的看自己需要,如果不确定就一…

zabbix 6.0 原理与部署

一、zabbix简介: zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbi…

如何迁移数据到水经微图64位版?

我们在《为什么要升级水经微图到64位?》一文中,为大家分享了升级水经微图到64位的原因。 这里,我们再为大家分享一下在哪些情况下升级需要迁移已标注的数据,以及如何迁移已标注绘制的数据到水经微图64位中。 哪些情况需要迁移数…

Vue路由跳转页面刷新

案例使用映射路由 百度的时候各种操作就是没有注意keepAlive,发现那个为缓存开启之后前端有个小后台Vue生命周期函数失效。同一个页面刷新时这个keep Alive需要关闭。

11 OAuth2.0实战:网关统一认证授权

上一节介绍了认证中心,这节介绍下网关如何集成认证中心实现网关的统一认证授权。 木谷博客系统的整个认证授权架构设计如下图: 网关在这里的主要功能就是6-8这三步: 校验token:对令牌的过期时间、签名进行校验鉴权:对令牌的权限进行校验转发:解析令牌中的相关信息,通过…

Proto3语法详解02

目录 1.默认值 2.更新消息 2.1更新规则 2.2保留字段reserved 2.2.1创建通讯录3.0版本---验证错误删除字段造成的数据损坏 2.3未知字段 2.3.1未知字段从哪获取 3.3.2升级通讯录3.1版本--验证未知字段 2.4前后兼容性 3.选项option 3.1选项分类 3.2常用选项列举 1.默认值…

如何解决主从数据库同步延迟问题?

如何解决主从数据库同步延迟问题? 前言 最近,系统上频繁出现主从延迟的问题,因此针对主从架构、主从同步以及主从延迟问题进行了一次学习。 主从架构浅析 在了解主从延迟之前,我们有必要对主从架构有一些简单的认识。在如今的…

QT QComBox实现模糊查询

一、概述 在Qt中,可以通过QComboBox和QLineEdit实现模糊查询的功能。模糊查询是指根据用户输入的文本,在下拉框的选项中进行模糊匹配,并动态地显示匹配的选项。 二、基础知识 1、QCompleter (1)QCompleter 是 Qt 框架中提供的一个用于自动…

代码随想录算法训练营 ---第四十六天

第一题: 简介: 本题的重点在于确定背包容量和物品数量 确定dp数组以及下标的含义 dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。 2.确定递推公式 如果确定dp[j] 是true,且…

2019年11月7日 Go生态洞察:Go Modules v2及更高版本

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

应用密码学期末复习(1)

学习资料 应用密码学总结_应用密码学知识点总结-CSDN博客 应用密码学期末复习知识点总结_5的36次方mod97__PriDe的博客-CSDN博客 【密码学】密码学期末考试速成课,不挂科!!#高数帮_哔哩哔哩_bilibili 目录 学习资料 第一章 概述 1.1信息…

淼一科技为互联网企业销毁硬盘数据 拆除机房设备

在上海这座繁华的大都市,淼一科技以其专业的服务和卓越的技术,为众多互联网企业提供硬盘数据销毁和机房设备拆除服务。作为业界领先的数据安全解决方案提供商,淼一科技致力于保障客户数据的安全与隐私,为客户创造更高的商业价值。…

uniapp前端+python后端=微信小程序支付到底怎么开发???国内的资料为什么没一篇能讲清楚,简简单单的只需要3步就可以了-V2版本

一.微信小程序支付 真的,在接到这个任务的时候,本以为很简单,不就是普通的浏览器复制粘贴,最不济找下gpt给生成一下,但是到实际开发就不同了,不是后端出问题就是前端,搜资料,上百度…

Current request is not a multipart request问题排查

概述 在应用工程里看到如下被标记为deprecated的代码,这对有代码洁癖的我而言是无法忍受的: row.getCell(10).setCellType(Cell.CELL_TYPE_STRING); String hospital row.getCell(0).getStringCellValue();对应的poi版本号?是的&#xff…

适用于iOS 的顶级苹果数据恢复软件

数据丢失可能随时发生在任何人身上,这可能是一种令人沮丧的经历。丢失 iOS 设备上的重要数据可能会造成特别严重的损失,因为其中可能包括有价值的照片、联系人、消息和其他重要文件。幸运的是,有多种数据恢复工具可以帮助用户恢复丢失的数据。…

filebeat日志收集工具

elk:filebeat日志收集工具和logstash相同 filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小得多 filebeat可以运行在非Java环境,它可以代理logstash在非Java环境上收集日志 filebeat无法实现数据的过滤&…

定制开发办公软件在企业发展中的优势|app小程序网站搭建

定制开发办公软件在企业发展中的优势|app小程序网站搭建 如今,办公软件已经成为企业日常工作的必需品。很多企业为了提高工作效率和满足自身业务需要,选择定制开发办公软件。下面将介绍定制开发办公软件在企业发展中的优势。 首先,定制开发办…