LeetCode (206单链表反转)

目录

题目描述:

代码:

第一种:

第二种:

第三种:

第四种:

第五种:

主函数:

ListNode类:


题目描述:

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

示例 1:

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

示例 2:

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

代码:

第一种:

构造一个新链表,从旧链表依次拿到每一个节点,创建新节点添加到新链表的头部,最后返回新链表的头节点
  public ListNode reverseList1(ListNode o1) {ListNode n1 = null;ListNode p = o1;while (p != null) {n1 = new ListNode(p.val, n1);p = p.next;}return n1;}

第二种:

构造一个新的链表,从旧链表的头部移除节点,添加到新链表的头部,与上一个方法的区别在于未提供节点外层的容器类,
public ListNode reverseList2(ListNode head) {List list1=new List(head);List list2=new List(null);while(true){ListNode first=list1.removeFirst();if(first==null)break;list2.addFirst(first);}return list2.head;}public class List{ListNode head;public List(ListNode head){this.head=head;}public void addFirst(ListNode first){first.next=head;head=first;}public ListNode removeFirst(){ListNode first=head;if(first!=null){head=first.next;}return first;}}

第三种:

递归

 public ListNode reverseList3(ListNode p) {if(p==null||p.next==null)return p;ListNode last=reverseList3(p.next);//p.next为5p.next.next=p;//假设p为4,p.next为5,那么p.next.next=p就是5.next=4p.next=null;//4.next=nullreturn last;}

第四种:

从链表每次拿到第二个节点,将其从链表断开,插入头部,直到它为null结束
 public ListNode reverseList4(ListNode o1) {//1.空链表,2.一个元素if(o1==null||o1.next==null)return o1;ListNode o2=o1.next;ListNode n1=o1;while(o2!=null){o1.next=o2.next;//将其断开o2.next=n1;//插入头部n1=o2;//n1指向头部o2=o1.next;//o2指向下一个节点}return n1;}

第五种:

将链表分成两个部分,不断从链表2的头部往下插入链表1的头部,直到链表2为空结束
public ListNode reverseList(ListNode o1) {//1.空链表,2.一个元素if(o1==null||o1.next==null)return o1;ListNode n1=null;while(o1!=null){ListNode o2=o1.next;o1.next=n1;n1=o1;o1=o2;}return n1;}

主函数:

 public static void main(String[] args) {ListNode o5=new ListNode(5,null);ListNode o4=new ListNode(4,o5);ListNode o3=new ListNode(3,o4);ListNode o2=new ListNode(2,o3);ListNode o1=new ListNode(1,o2);System.out.println(o1);ListNode n1=new Test().reverseList(o1);System.out.println(n1);}

ListNode类:

package reverseList;public class ListNode {//反转单向链表public int val;public ListNode next;public ListNode(int val, ListNode next){this.val = val;this.next = next;}public String toString(){StringBuilder sb=new StringBuilder();//创建一个 StringBuilder 对象,用于构建字符串。sb.append("[");ListNode p=this;//创建一个指向当前节点的指针,用于遍历链表while(p!=null){sb.append(p.val);if(p.next!=null){sb.append(",");}p=p.next;}sb.append("]");return sb.toString();//将 StringBuilder 对象转换为字符串,并返回该字符串。}public ListNode reverseList(ListNode o1) {ListNode n1 = null;ListNode p = o1;while (p != null) {n1 = new ListNode(p.val, n1);p = p.next;}return n1;}
}

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

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

相关文章

【WPF】MatrixTransform类

【WPF】MatrixTransform类 主要特性使用场景示例 在WPF(Windows Presentation Foundation)中,MatrixTransform 类是用于表示一个仿射变换的类,它允许开发者通过一个矩阵来定义一个二维空间中的线性变换。这种变换可以包括平移&…

C# Modbus RTU通讯回顾

涉及技术: 1.使用NMdbus4 库 2.ushort[]转int 记得之前刚学习的时候,是ushort[] → Hex字符串→byte[] → 翻转byte[] →BitConverter.ToInt32(),饶了一大圈;实际上可以直接转;这里也有小细节:使用BitCo…

vue2中的v-bind相当于原生js的什么

在 Vue 2 中&#xff0c;v-bind 是一个指令&#xff0c;用于动态地将一个或多个属性绑定到 DOM 元素上。它相当于在原生 JavaScript 中直接操作 DOM 元素属性的方法。 v-bind 的基本用法 在 Vue 中&#xff0c;v-bind 可以这样使用&#xff1a; <!-- 绑定一个属性 -->…

RHCE6

一、DNS域名解析服务器 DNS &#xff08; Domain Name System &#xff09;是互联网上的一项服务&#xff0c;它作为将域名和 IP 地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。DNS 系统使用的是网络的查询&#xff0c;那么自然需要有监听的 port 。…

python 读取文件的内容

在Python中&#xff0c;读取文件内容是一个基础且常见的操作。以下是一些常用的方法来读取文件内容&#xff1a; 使用内建的open()函数和read()方法 # 打开文件 with open(example.txt, r) as file:# 读取文件内容content file.read() # 打印文件内容 print(content)这里使用…

uni-app 下拉刷新、 上拉触底(列表信息)、 上滑加载(短视频) 一键搞定

一、下拉刷新 1. 首先找到pages.json中 给需要进行下拉刷新的页面设置可以下拉刷新 2. 然后在需要实现下拉刷新的script标签内添加 导入onPullDownRefresh import {onPullDownRefresh} from dcloudio/uni-app 下拉刷新触发的事件 onPullDownRefresh(()> {console.log(正…

Java 中 HashMap集合使用

目录 一. HashMap概述 二. HashMap特点 三. HashMap构造方法 四. HashMap的常用方法 五. 使用注意事项 六. 代码示例 一. HashMap概述 HashMap 是 Java 中的一个非常重要的类&#xff0c;它实现了 Map 接口&#xff0c;用于存储键值对&#xff08;key-value pairs&#…

【架构艺术】服务架构稳定性的基础保障

一个产品随着不断研发&#xff0c;其服务架构的复杂度会越来越高。随着产品的用户体量变大&#xff0c;为了保证产品能够长线运营&#xff0c;就需要保证整个服务架构的稳定性。因此&#xff0c;今天这篇文章&#xff0c;就从实操的角度&#xff0c;粗浅讨论一下&#xff0c;服…

QML旋转选择器组件Tumbler

1. 介绍 Tumbler是一个用于创建旋转选择器的组件。它提供了一种直观的方式来让用户从一组选项中进行选择&#xff0c;类似于转盘式数字密码锁。网上找的类似网图如下&#xff1a; 在QML里&#xff0c;这种组件一共有两个版本&#xff0c;分别在QtQuick.Extras 1.4(旧)和QtQuic…

【Python】-蚂蚁森林问答题-查看当天的答案

http://www.xuexili.com/mayizhuangyuan/jinridaan.htmlimport requests from lxml import etree import time import re url ‘https://www.app178.com/dujia/248082.html’ resp requests.get(url) resp.encoding ‘utf-8’ html etree.HTML(resp.text.encode(‘gbk’).…

20.网工入门篇--------介绍下IPV6基础知识

地址表示形式&#xff1a; 完整格式&#xff1a;IPv6 地址总长度为 128 位&#xff0c;通常分为 8 组&#xff0c;每组为 4 个十六进制数的形式&#xff0c;每组十六进制数间用冒号分隔。例如&#xff1a;2001:0db8:85a3:0000:0000:8a2e:0370:7334。压缩格式&#xff1a;为了书…

车载无人机用来做什么?车载无人机技术详解

车载无人机是将车和无人机组合到一起的产品&#xff0c;它有效地结合了无人机的灵活性和指挥车的远距离移动性&#xff0c;大大扩展了无人机的使用范围。以下是对车载无人机技术的详细解析&#xff1a; 一、车载无人机的应用 1. 应急现场指挥&#xff1a; 车载无人机可迅速抵…

【ChatGPT】让ChatGPT根据固定模板生成报告或文档

让ChatGPT根据固定模板生成报告或文档 在撰写报告或文档时&#xff0c;使用固定模板可以确保内容的统一性和结构的清晰性。利用ChatGPT生成符合特定模板的报告&#xff0c;不仅提高了工作效率&#xff0c;还能确保信息的准确传达。本文将探讨如何设计固定模板并引导ChatGPT生成…

HarmonyOS NEXT 应用开发实战(九、知乎日报项目详情页实现详细介绍)

在本篇博文中&#xff0c;我们将探讨如何使用 HarmonyOS Next 框架开发一个知乎日报的详情页&#xff0c;逐步介绍所用到的组件及代码实现。知乎日报是个小巧完整的小项目&#xff0c;这是一个循序渐进的过程&#xff0c;适合初学者和有一定开发经验的工程师参考。 1. 项目背景…

C++线程异步

std::future std::future作为异步结果的传输通道&#xff0c;可以很方便地获取线程函数的返回值。 std::future_status Ready (std::future_status::ready): 当与 std::future 对象关联的异步操作已经完成时&#xff0c;std::future 处于 ready 状态。在这个状态下&#xff0c;…

阿里云k8s-master部署CNI网络插件遇到的问题

问题 按照网络上的部署方法 cd /opt/k8s # 下载 calico-kube-controllers配置文件&#xff0c;可能会网络超时 curl https://docs.projectcalico.org/manifests/calico.yaml -O kubectl apply -f calico.yaml 试了很多次都不行&#xff0c;k8s-master都是Not ready的状态 ca…

从壹开始解读Yolov11【源码研读系列】——Data.Base.py.BaseDataset:可灵活改写的数据集加载处理基类

目录 一、base.BaseDataset 1.__init__类初始化 2.get_img_files根据地址获得图片详细地址 3.get_labels&#xff08;自定义&#xff09;获取标签数据 4. update_labels指定类别和单分类设定 5.set_rectangle开启批量矩阵训练 6.cache_images加载图片进程可视化 7.load_image内…

从0学习React(10)

示例代码&#xff1a; const columns: ProColumns<API.BasicInfoItem>[] [{title: 设备编码,dataIndex: deviceCode,ellipsis: true,width: 40,},{title: 设备名称,dataIndex: deviceName,ellipsis: true,width: 50,},{title: 产线-工序,dataIndex: deviceClassifyName…

js操作数组的方法 / js操作字符串的方法

操纵数组的方法 常见的有10种 push() -在数组末尾添加一个或多个元素&#xff0c;并返回新的长度。 pop() -删除数组的最后一个元素&#xff0c;并返回那个元素。 shift() -删除数组的第一个元素&#xff0c;并返回那个元素。 unshift() -在数组的开始添加一个或多个元素&…

计算机毕业设计Hadoop+大模型地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…