【力扣】206.反转链表

news2024/11/27 20:51:51

206.反转链表

这道题有两种解法,但不只有两种,嘿嘿。

法一:迭代法

就是按循序遍历将每一个指针的指向都给改了。比如说1——>2——>3改为null<——1<——2<——3这样。那这里以第二个结点为例,想一想。我想要指向本身的指针改为指向1,那我是不是要获取它前一个结点的值,那这怎么获取呢,所以需要用一个指针来保存前一个结点。同理,当我成功的将指向本身的箭头更改之后,那我原本元素的下一个咋整,还能找到吗,所以又需要设立一个指针用以保存后面的原本的值。说的可能很复杂,但是代码很简单。

代码:

(参考官方的,因为我现在还在学习阶段)

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        //1、迭代
        //pre用于存储当前结点的前一个结点
        ListNode pre=null;
        ListNode curr=head;
        while(curr!=null){
            //next指针用于存储当前结点的后一个结点
            ListNode next=curr.next;
            curr.next=pre;
            pre=curr;
            curr=next;
        }
        return pre;
    }
}

法二:递归

这个我比较喜欢。

题解:

用递归,直到当前结点p,的p-next=null则返回其本身。然后回到上一个结点。

        head.next.next=head;

        head.next=null;

这两行代码的作用在于将当前结点的p-next=null,同时将当前结点的下一个结点的next指向本身,将箭头调换,指向自己,但不是自杀,只是为了完成任务而已(开个玩笑)。

我觉得可能会卡在对递归的理解,多多刷题,多多思考,相信自己,就ok了。

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        //2、递归
        if(head==null||head.next==null){
            return head;
        }
        ListNode newHead=reverseList(head.next);
        //反转吧
        head.next.next=head;
        head.next=null;
        return newHead;
    }
}

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

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

相关文章

怎样提升Windows Server安全性?

在Windows Server环境中&#xff0c;审计对于处理安全、运营和合规需求至关重要。然而&#xff0c;微软活动目录安全审计工具存在固有限制&#xff0c;包括专业知识需求、耗时的过程和缺失的功能&#xff0c;因此我们需要第三方审计工具&#xff0c;如ManageEngine ADAudit Plu…

Pytorch CIFAR10图像分类 ShuffleNetv2篇

Pytorch CIFAR10图像分类 ShuffleNetv2篇 文章目录 Pytorch CIFAR10图像分类 ShuffleNetv2篇4. 定义网络&#xff08;ShuffleNetv2&#xff09;高效网络设计实用指南指南一&#xff1a;同等通道大小最小化内存访问量指南二&#xff1a;过量使用组卷积会增加MAC指南三&#xff1…

动手学深度学习——Anaconda、pytorch、paddle安装(cpu版本)

之前出了个Windows下的深度学习安装&#xff0c;但在继续学习的过程中发现&#xff0c;沐神的一些代码跑不起来&#xff0c;这里又提供pytorch和paddle的安装&#xff0c;各位用pytorch或者百度飞桨paddlepaddle来学习深度学习也是可以的。 安装Anaconda 1. 打开Anaconda链接&…

2023 年最新 FPV 套件评测

FPV 飞行是近年来非常流行的一种新兴运动。它可以让您在第一人称视角下体验飞行的乐趣。FPV 套件可以分为多种类型&#xff0c;根据您的需求和预算&#xff0c;您可以选择合适的套件。 下面我们将对 2023 年最新的几款 FPV 套件进行评测&#xff0c;帮助您选择合适的产品。 Sp…

轨迹分析:Palantir评估细胞分化潜能 类似于monocle2

轨迹分析是单细胞测序分析中重要的组成部分&#xff0c;它基于细胞谱系之间“具有中间态细胞”的理论基础&#xff0c;通过结合先验知识&#xff08;细胞注释、markers&#xff09;、细胞基因表达改变等&#xff0c;为在单细胞测序数据赋予了“假时间”&#xff08;pseudotime&…

Python接口自动化测试:断言封装详解

概要 在进行API接口测试时&#xff0c;断言起着至关重要的作用。断言是用于验证预期结果与实际结果是否一致的过程。在Python中&#xff0c;我们可以利用一些库来实现断言功能。 1. 安装必要的库 在Python中&#xff0c;我们主要会使用两个库&#xff1a;requests和jsonpath。…

三:爬虫-网络请求模块(下)

三&#xff1a;网络请求模块&#xff08;下&#xff09; 1.Requests模块&#xff1a; ​ Requests是用Python语言编写&#xff0c;基于urllib&#xff0c;采用 Apache2 Licensed开源协议的 HTTP 库&#xff0c;它比urllib更加的方便&#xff0c;可以节约我们大量的工作&#…

可编程电子负载在新能源汽车领域的应用,你知道多少?

可编程电子负载在新能源汽车领域的应用非常广泛&#xff0c;主要体现在以下几个方面。 电池测试&#xff1a;新能源汽车的核心是电池&#xff0c;而电池的性能直接影响到汽车的续航里程、充电速度等关键指标。可编程电子负载可以模拟各种复杂的充放电工况&#xff0c;对电池进行…

SQL Server 数据库,创建触发器避免数据被更改

5.4触发器 触发器是一种特殊类型的存储过程&#xff0c;当表中的数据发生更新时将自动调用&#xff0c;以响应INSERT、 UPDATE 或DELETE 语句。 5.4.1什么是触发器 1.触发器的概念 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程&#xff0c;触发器通常用于强…

彻底解决公网ip无法访问服务器的问题

用服务器的公网ip访问突然提示页面无法访问了&#xff0c;之前还是ok的&#xff1a; 解决方案&#xff1a; 步骤1. 检查云服务器的安全组规则是否有添加80端口映射&#xff0c;如果没有需要手动添加&#xff0c;否则不能使用公网访问&#xff0c;检查了一下是有的&#xff1…

SpringBoot3-实现和注册拦截器

1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

项目管理:为什么项目计划必不可少

项目管理计划定义了如何执行、监督和控制项目。项目计划让我们准确地知道在项目的每个阶段应该做什么&#xff0c;在哪里分配资源和时间&#xff0c;以及在事情超出计划或超出预算时要注意什么。 为了项目中获得成功&#xff0c;管理者需要在前期创建一个项目计划&#xff0c…

el-menu标题过长显示不全问题处理

项目基于vue-element-admin 问题 期望 处理方式 \src\layout\components\Sidebar\index.vue 文件后添加CSS <style scped> /* 侧栏导航菜单经典 文字超长溢出问题 CSS折行 */ .el-submenu__title {display: flex;align-items: center; } .el-submenu__title span {white-…

LeetCode题:931下降路径最小和

目录 一、题目要求 二、解题思路 &#xff08;1&#xff09;状态表示 &#xff08;2&#xff09;状态转移方程 &#xff08;3&#xff09;初始化 &#xff08;4&#xff09;填表顺序 &#xff08;5&#xff09;返回值 三、代码 一、题目要求 931. 下降路径最小和 给你…

【android开发-18】android中运行时申请权限详解

1&#xff0c;android权限机制 在Android中&#xff0c;权限机制是一种保护用户隐私和数据安全的重要机制。它允许应用程序在访问敏感或危险的数据或资源时获取特定的权限。以下是Android中权限机制的详细解释&#xff1a; 1&#xff0c;权限类别&#xff1a;Android将权限分…

自己搭建一个window系统上的MinIO系统(小白30分钟搞得版)

自己搭建一个window系统上的MinIO系统 前言实现系统说明 效果配置结果测试本地测试同一网络内的其他计算机访问 展望注参考链接 前言 有个项目使用到minio的云端存储系统&#xff0c;为了更好的理解项目&#xff0c;准备对这个“神秘的玩意”自己研究一下&#xff0c;看看到底…

【Pyqt5】QWidget: Must construct a QApplication before a QWidget

问题说明&#xff1a; pyqt6切换为pyqt5时&#xff0c;引用自定义类时报错&#xff0c;QWidget: Must construct a QApplication before a QWidget 解决办法 修改导入python包的导入顺序后可以正常运行 使用pyqt5时需将pyqtgraph放到pyqt5之后导入

idea__SpringBoot微服务03——yaml(新注解)(新的依赖)

yaml 一、数据格式二、注入配置文件&#xff08;yaml注入&#xff09;&#xff08;新注解ConfigurationProperties&#xff09;三、注入配置文件&#xff08;properties注入&#xff09;&#xff08;新注解PropertySource&#xff09;四、yaml配置文件占位符${}五 、yaml跟prop…

基于Springboot的任务发布平台设计与实现(源码齐全+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

【Qt】QLineEdit显示输入十六进制,位数不足时按照规则填充显示及每两个字符以空格填充

问题 在实际开发中&#xff0c;有时候需要对输入进行限制&#xff0c;一是更加合理&#xff0c;二是防止出现误操作。 比如&#xff1a; 使用Qt进行应用程序开发时&#xff0c;对单行编辑框QLineEdit控件&#xff0c;设置只可输入十六进制。 限制输入的方式常用且经典的是使用…