Leetcode206:反转链表

news/2024/10/18 0:35:06/

一、题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表
示例:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]输入:head = [1,2]
输出:[2,1]输入:head = []
输出:[]

二、题解

1.头插法

构造一个新链表,从旧链表中取出节点,一个个插入到新链表的头部,最后就逆序了。
在这里插入图片描述

public static Node reverseList1(Node head) {//新链表的头节点Node node = null;//遍历旧链表while (head != null) {//每次都创建一个新节点,放在新链表的头部(当前链表的next是之前的node)node = new Node(head.value, node);//让旧链表的头指针往下移动一位head = head.next;}return node;
}
2.双指针
  • 1.因为要改变指针的方向,会丢失掉原本next的指针,所以让next元素先暂存起来:ListNode temp = head.next;
  • 2.改变cur指针的指向(head指针)head.next = pre;
  • 3.让pre和cur同时向后移动 pre = head; head = temp;
  • 4.当cur指向到null时,遍历完毕 head!=null
    在这里插入图片描述
public Node reverseList(Node head) {Node pre = null;while(head!=null){//把当前节点的后一个节点暂存到tempNode temp = head.next;head.next = pre;pre = head;head = temp;}return pre;
}
3.递归

通过递归调用每次让头指针往后移,即相当于执行了head = head.next
在递归内部的操作把指针的指向改变,为了防止循环引用,在改变完当前节点的指向后,还要把前一个节点的指针指为空。
image.png

public static Node reverseList(Node head) {if (head == null || head.next == null) {return head;}//返回最后的节点Node node = reverseList(head.next);head.next.next = head;head.next = null;return node;
}

http://www.ppmy.cn/news/1341736.html

相关文章

JavaScript阻止浏览器默认行为

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 浏览器对一些事件具有默认行为,例如点击链接时跳转页面,提交表单时发…

升级 FATFS 笔记

最近有朋友希望 AWTK demo 中的 FATFS 能升级到最新版本,在升级的过程中遇到一些小问题,这里做个记录。 1. 升级 FATFS 从官网下载最新代码。更新下面的文件到AWTK项目中: ff.cff.hffsystem.cffunicode.c 下面的文件不需要更新&#xff1…

Linux软件编程以及IO输入输出——linux——day1

Linux软件编程以及其IO输入输出 Linux软件编程 linux是操作系统的内核 主要有以下几个功能: ①管理CPU ②管理内存 ③管理硬件设备 ④管理文件系统 ⑤任务调度 shell指令 shell命令主要保护Linux内核(用户和Linux内核不直接操作,通过操作Shell,Shell和内核交互…

vue3 markdown编辑器推荐(maven-editor vditor tiptap )

最近项目需要用到markdown编辑器,使用了三种 maven-editor (http://www.mavoneditor.com/?spma2c6h.12873639.article-detail.9.aaad62affAKmTV)vditor (https://b3log.org/vditor/demo/index.html?utm_sourceld246.com)tiptap (https://github.com/ueberdosis/t…

网络安全之SSL证书加密

简介 SSL证书是一种数字证书,遵守SSL协议,由受信任的数字证书颁发机构(CA)验证服务器身份后颁发。它具有服务器身份验证和数据传输加密的功能,能够确保数据在传输过程中的安全性和完整性。 具体来说,SSL证…

QT 应用中集成 Sentry

QT 应用中集成 Sentry QT应用中集成 SentrySentry SDK for C/C注册 Sentry 账号QT 应用中集成 Sentry触发 Crash 上报 QT应用中集成 Sentry Sentry 是一个开源的错误监控和日志记录平台,旨在帮助开发团队实时捕获、跟踪和解决软件应用程序中的错误和异常。它提供了…

结构体的学习

结构体与共用体,枚举 1.数据类型复习: 2结构体. eg;统计全校同学信息 需要记录的点--- 姓名,班级,性别,成绩,年龄 统计名字:char s[ ] [ 100 ] { "Tmo" } …

02 使用jdk运行第一个java程序:HelloWorld

使用jdk运行第一个java程序 1 HelloWorld小案例1.1 编写流程1.2 错误示例 首先在CMD命令行里面,使用javac xxxx.java, 进行编译,其中会有报错; 然后生成xxxx.class 文件,然后使用java xxxx.class 进行运行。 1 HelloWo…