【链表】-Lc206-反转链表(三大指针)

写在前面

  最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。


目录

  • 写在前面
  • 一、场景描述
  • 二、具体步骤
    • 1.环境说明
    • 2.代码
  • 写在后面


一、场景描述

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

示例:
输入:1->2->3
输出:3>2>1

二、具体步骤

1.环境说明

名称说明
IntelliJ IDEA2019.2

2.代码

以下为Java版本实现:

public class Lc206_reverseList {public static void main(String[] args) {ListNode n3 = new ListNode(3);ListNode n2 = new ListNode(2, n3);ListNode head = new ListNode(1, n2);ListNode.print(head);System.out.println();ListNode.print(reverseList(head));}/*** n** 反转链表** 思路:* 1-> 2-> 3* 把2指向1,把3指向2... 这是一个循环的过程** 链表的循环一定有一个 curr 用来移动,要想改变链的方向* 还需要知道前一个节点(和curr用于改变链的方向)* 后一个节点(用于循环curr)** 定义 3个指针 pre、curr、next* pre = null, curr = head, next;** 遍历 while(curr != null) 为 next赋值 next = curr.next* curr.next = pre 改变链的方向(原来curr.next 指向的 next = curr.next)* 往后移动 pre = curr; curr = curr** 最后返回头,就是 pre** @param head* @return*/private static ListNode reverseList(ListNode head) {ListNode pre = null, curr = head, next;while (curr != null) {next = curr.next;// 改变链方向curr.next = pre;// 向后移动pre = curr;curr = next;}return pre;}static class ListNode {int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}public static void print(ListNode head) {while (head != null) {if (head.next == null) {System.out.print(head.val);} else {System.out.print(head.val + ", ");}head = head.next;}}}}

写在后面

  如果本文内容对您有价值或者有启发的话,欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。

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

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

相关文章

PAM4(4 级脉冲幅度调制)

PAM4 正文简介PAM4 的优势 正文 简介 全称 pulse-amplitude modulation 4 level。PAM4 是一个多级信号调制,它使用四种不同的信号等级,分别为 0,1,2,3。每一个信号等级可以表示 2 比特的逻辑信息。 PAM4 的优势 在…

14.java集合

文章目录 概念Collection 接口概念示例 Iterator 迭代器基本操作:并发修改异常增强循环遍历数组:遍历集合:遍历字符串:限制 list接口ListIteratorArrayList创建 ArrayList:添加元素:获取元素:修…

八、MySQL事务和SQL优化

1 什么是事务 Transaction,使我们数据库内最小且不可再分的单元。通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)。一个完整的业务需要批量的DML(INSERT 、UPDATE、DELETE)语句共同联合完成。事务只和DML语句有关…

Js设计模式

1、简介 设计模式总的来说是一个抽象的概念,是软件开发人员在开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 2、工厂模式 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对…

堡垒机是什么:如何帮助企业提高网络安全防护

引言 网络安全是当今企业面临的一个重大挑战,尤其是对于那些拥有大量敏感数据和业务系统的企业。一旦遭受黑客攻击或内部人员泄露,企业可能会遭受巨大的经济损失和声誉损害。因此,企业需要采取有效的措施来保护自己的网络资源,防…

计算机设计大赛 基于图像识别的跌倒检测算法

前言 🔥 优质竞赛项目系列,今天要分享的是 基于图像识别的跌倒检测算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/…

金融行业现场故障处理实录

KL银行现场服务记录—HA故障 服务时间 2019年9月10日星期二 14:40 到2019年9月11日星期三 0:30 服务内容 排查redhat RHEL 6.4 一个节点cman启动故障。 (1)、查看系统日志; (2)、查看ha日志…

跟着pink老师前端入门教程-day13

品优购案例 一、品优购项目规划 1. 品优购项目整体介绍 项目名称:品优购 项目描述:品优购是一个电商网站,我们要完成 PC 端首页、列表页、注册页面的制作 2. 品优购项目学习目的 1. 电商类网站比较综合,里面需要大量的布…

如何使用Python Flask搭建一个web页面并实现远程访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程…

2014年苏州大学837复试机试C/C++

2014年苏州大学复试机试 要求 要求用C/C编程;对程序中必要的地方进行注释。上机规则 请在电脑桌面上新建一个文件夹文件夹名为考试姓名(中文);考试完毕后,将所编写的文件放在上述文件中。 第一题(20分&…

linux 运行vue项目

1:在本地电脑 项目跟目录 执行 npm run build 在根目录生成文件夹 dist 2:复制dist 到linux 上 /usr/vuespace/ledger-web/dist 3: 配置nginx server {listen 443 ssl;server_name tz.i569.cn; #填写绑定证书的域名ssl_certificate /etc/nginx/myconf…

如何搭建开源笔记Joplin服务并实现远程访问本地数据

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能,…

MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇

CSDN 成就一亿技术人! 今天来分享一期MySQL的基本用法(增删改查 对库 对表 对值) CSDN 成就一亿技术人! 目录 MySQL的基础概念 SQL 语言的主要分类 DDL(数据定义语言) DML(数据操控语言) DQL(数据库查…

【STM32】快速搭建工程

1. 快速生成工程 2.下载DFP包或者根据已有DFP包安装 3.拷贝现有工程的操作系统,应用层代码 debug 就完成最新工程的快速搭建 4.编译发现如下图 5.修改完这个报错,新工程建立基本完成,如果有其他错误,缝缝补补就可 比如 Main.c文…

广联达-EmailAccountOrgUserService-sql注入漏洞复现

产品简介 广联达OA是一款为企业提供综合办公解决方案的软件。它集成了多种功能,包括文档管理、流程审批、任务分配等,旨在提高企业内部的工作效率和协作能力。同时,广联达OA还注重安全性,通过多种措施保护企业数据和信息的安全。…

信道分布(80%用例)C卷(JavaPythonC++Node.jsC语言)

算法工程师小明面对着这样一个问题,需要将通信用的信道分配给尽量多的用户: 信道的条件及分配规则如下: 1) 所有信道都有属性:”阶”。阶为r的信道的容量为2^r比特; 2) 所有用户需要传输的数据量都一样:D比特; 3) 一个用户可以分配多个信道,但每个信道只…

微博怎么把客户引流到私域?(引流技巧)

微博 1)背景banner图 在微博主页顶部的背景图里,可以引导添加个人微信、公众号等信息,通常配合福利引导用户添加。 2)个人简介 微博中比较常见的引流方式,可以直接在简介区内留下微信号、公众号名称、邮箱等信息&#…

没学过编程语言,想要做一款游戏应该怎么做?

想让你的创意成为像《堡垒之夜》《原神》这样引爆式的热门游戏吗? 想制作一个能与《我的世界》《模拟城市》一决高下的畅销游戏吗? 即使你手头并没有复杂的代码能力,也不要灰心!我这里有一份新手向游戏制作指南,只要耐…

AI模型压缩技术

模型压缩技术是指通过一系列方法和技巧,减小深度学习模型的大小和计算量,同时尽量保持模型的性能。这对于在资源受限的设备上部署模型、减少模型传输和存储成本以及提高模型推理速度都非常有用。 以下是一些常见的模型压缩技术: 参数剪枝&am…

【笔记】Helm-4 最佳实践-5 标签和注释

标签和注释 最佳实践的这部分讨论关于在chart中使用标签和注释的最佳方式。 是标签还是注释? 在以下条件下,元数据项应该 实时标签: 1、Kubernetes使用它来识别这种资源 2、为了查询系统,暴露给操作员会很有用 比如&#xff0…