当前位置: 首页 > news >正文

【C】链表算法题2 -- 反转链表

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

 看一下题目描述
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例1

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

示例2

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

思路

  这道题有一个特别好但是不太容易想到的方法,那就是双指针法,之前在顺序表的算法题 -- 移除元素中曾用到过此方法,在那道题中是用两个数组的下表src和dst来遍历顺序表,从而达到去掉相同元素的效果,而在反转链表里面我们依然会用到这个方法。

  在这道题中,我们会创建3个指针n1、n2、n3,开始先让n1指向NULL,n2指向首节点,n3指向首节点的下一个节点,然后遍历原链表,每次让n2的next指针指向n1,让n3的next指针指向n2,然后让n1指向n2指向的节点,n2指向n3指向的节点,再让n3指向其next指针指向的节点,直到n2指向了NULL,最后返回n1,这样就可以达到逆置原链表的效果,画图如下:

  我们再来考虑一下特殊情况,如果按照这个逻辑,那么n3是会比n2早走到NULL的位置的,而判断循环停止的条件是以n2为不为NULL为判断条件,而如果n3为NULL的话,再让n3指向n3的next指针指向的节点,就会发生对NULL指针的解引用,会报错,所以需要判断一下n3的值,再让n3改变指向。

代码

typedef struct ListNode ListNode;
struct ListNode* reverseList(struct ListNode* head) 
{//如果链表为空,直接返回if (head == NULL){return head;}//创建三个指针ListNode* n1, *n2, *n3;n1 = NULL, n2 = head, n3 = head->next;while (n2){//反转链表n2->next = n1;n1 = n2;n2 = n3;if (n3)n3 = n3->next;}return n1;
}

  在这道题目中,我们依然使用了双指针法来解决。双指针法是解算法题中特别重要的一个方法,该方法并不是真的只创建两个指针,而是通过创建变量来遍历并改变顺序表或者链表中的数据,这个变量可能是下标,也可能是指针。请一定要掌握双指针法这种算法思想。

相关文章:

【C】链表算法题2 -- 反转链表

leetcode链接https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/…...

1.7 ChatGPT:引领AI对话革命的致胜之道

ChatGPT:引领AI对话革命的致胜之道 随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,OpenAI 的 ChatGPT 已经成为了举世瞩目的技术突破。从普通的自动化客服到深入的创作与协作,ChatGPT 通过其卓越的语言理解和生成能力,改变了人们与计算机交互的方式…...

当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线

问题:当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线; 原因:el-table有一个before的伪元素作为表格的下边框下,初始的时候已设置,在滚动的时候并没有重新设置…...

如何使用 useMemo 和 memo 优化 React 应用性能?

使用 useMemo 和 memo 优化 React 应用性能 在构建复杂的 React 应用时,性能优化是确保应用流畅运行的关键。React 提供了多种工具来帮助开发者优化组件的渲染和计算逻辑,其中 useMemo 和 memo 是两个非常有用的 Hook。本文将详细介绍这两个工具的使用方…...

turtle教学课程课堂学习考试在线网站

完整源码项目包获取→点击文章末尾名片!...

spark任务优化参数整理

以下参数中有sql字眼的一般只有spark-sql模块生效,如果你看过spark的源码,你会发现sql模块是在core模块上硬生生干了一层,所以反过来spark-sql可以复用core模块的配置,例外的时候会另行说明,此外由于总结这些参数是在不…...

TCP TIME-WAIT 状态为什么要坚持 2MSL

经常有人问这个问题,这种问题问我就对了。我准备了下面的一幅时序图来解释这个问题: 简单点说就是两个目的: 正常处理被动关闭方的重传 FIN;确保当前连接的所有报文全部消失。 也就是说,无论任何情况下,…...

如何在Ubuntu上安装Cmake

前言 ​ 本文主要阐述如何在Ubuntu22.04上面安装cmake,具体可看下面的操作。 正文 一、环境 Ubuntu22.04 cmake-3.31.4.tar.gz 二、步骤 参考这个方案: 【运维】Ubuntu如何安装最新版本的Cmake,编译安装Cmake,直接命令安装…...

1.17学习

crypto nssctf-[SWPUCTF 2021 新生赛]crypto8 不太认识这是什么编码,搜索一下发现是一个UUENCODE编码,用在线工具UUENCODE解码计算器—LZL在线工具解码就好 misc buuctf-文件中的秘密 下载附件打开后发现是一个图片,应该是一个图片隐写&…...

力扣 搜索二维矩阵

二分查找,闭区间与开区间的不同解法。 题目 乍一看,不是遍历一下找到元素就可以了。 class Solution {public boolean searchMatrix(int[][] matrix, int target) {for (int[] ints : matrix) {for (int ans : ints) {if (ans target) return true;}}…...

RabbitMQ基础篇

文章目录 1 RabbitMQ概述1.1 消息队列1.2 RabbitMQ体系结构 2 RabbitMQ工作模式2.1 简单模式(Simple Queue)2.2 工作队列模式(Work Queues)2.3 发布/订阅模式(Publish/Subscribe)2.4 路由模式(R…...

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题 idea现在只能创建最少jdk17,不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17,不能创建java8了吗 我本来以为是 IDEA 版本更新导致的 Bug,开始还没在意。 直到我今天自己初始化项目时才发现&am…...

[BrainShadow-V1] VR头戴设备统计报告

Brain-Shadow-V1 EventVR headsetsReported byXiao enDate2025/01/15Version1.0 HTC Vive Pro 2 Pro HTC Vive Pro 2 是一款高端虚拟现实头显,配备双 2.5K 显示屏,组合分辨率达到 48962448,提供 120 的视场角和 120Hz 的刷新率。该设备支持…...

RK3568 Android11 锁屏界面屏蔽下拉状态栏

参考文章: Android R锁屏界面屏蔽下拉状态栏_pulseexpansionhandler-CSDN博客 前提增加状态栏控制显隐属性,以下面文章为前提补充功能 RK3568 Android11 状态栏和导航栏增加显示控制功能-CSDN博客 修改文件位置: frameworks/base/package…...

53,【3】BUUCTF WEB october 2019 Twice SQLinjection

题目得到信息,2次注入,进入靶场 登录页面,很自然想到SQL 第一次注入应该是这个可以登录,注册,提交简介的页面 第二次注入应该是在info处注入,信息显示在简介处 我真的纯脑子有病,人家二次注入不…...

利用硬盘虚拟内存解决华为手机模拟器运行内存不足问题

在进行鸿蒙开发时,华为手机模拟器是必不可少的工具。然而,对于只有 8GB 物理内存的电脑来说,运行模拟器可能会遇到 "系统内存不足" 的提示,导致模拟器无法正常启动。这时,我们可以通过硬盘虚拟出额外的内存来…...

探秘Shortest与Stagehand:开启高效测试与自动化新篇

探秘Shortest与Stagehand:开启高效测试与自动化新篇 在数字化浪潮的推动下,网页自动化工具如同繁星般涌现,为众多行业带来了效率的变革。在这些工具中,Shortest和Stagehand凭借其出色的表现,成为了众多开发者、测试人…...

网络安全构成要素

一、防火墙 组织机构内部的网络与互联网相连时,为了避免域内受到非法访问的威胁,往往会设置防火墙。 使用NAT(NAPT)的情况下,由于限定了可以从外部访问的地址,因此也能起到防火墙的作用。 二、IDS入侵检…...

家政服务小程序,打造智慧家政新体验

春节即将来临,家政市场呈现出了火热的场景,大众对家政服务的需求持续增加。 近年来,家政市场开始倾向数字化、智能化,借助科学技术打造家政数字化平台,让大众在手机上就可以预约家政服务,减少传统家政市场…...

2.使用Spring BootSpring AI快速构建AI应用程序

Spring AI 是基于 Spring Boot3.x 框架构建,Spring Boot官方提供了非常便捷的工具Spring Initializr帮助开发者快速的搭建Spring Boot应用程序,IDEA也集成了此工具。本文使用的开发工具IDEASpring Boot 3.4Spring AI 1.0.0-SNAPSHOTMaven。 1.创建Spring Boot项目 …...

OpenCV实战-全景图像拼接

代码地址见文末 实现效果 1. 项目背景 随着计算机视觉技术的不断发展,图像拼接技术已被广泛应用于虚拟现实、地图生成、全景摄影等领域。图像拼接(Image Stitching)旨在将多张部分重叠的图像无缝拼接成一幅完整的全景图像。此任务要求图像处…...

h5使用video播放时关掉vant弹窗视频声音还在后台播放

现象&#xff1a; 1、点击遮罩弹窗关闭&#xff0c;弹窗的视频已经用v-if销毁&#xff0c;但是后台会自己从头开始播放视频声音。但是此时已经没有视频dom 2、定时器在打开弹窗后3秒自动关闭弹窗&#xff0c;则正常没有问题。 原来的代码&#xff1a; //页面 <a click&quo…...

解决leetcode第3418题机器人可以获得的最大金币数

3418.机器人可以获得的最大金币数 难度&#xff1a;中等 问题描述&#xff1a; 给你一个mxn的网格。一个机器人从网格的左上角(0,0)出发&#xff0c;目标是到达网格的右下角(m-1,n-1)。在任意时刻&#xff0c;机器人只能向右或向下移动。 网格中的每个单元格包含一个值coin…...

anaconda安装和环境配置

文章目录 一、Anaconda下载1.从官网直接下载&#xff1a;2.从镜像站中下载&#xff1a; 二、Anaconda安装三、检测是否有Anaconda配置anaconda环境 四、 Anaconda创建多个python环境&#xff08;方便管理项目环境&#xff09;1.查看conda有哪些环境2.创建python3.6的环境3.激活…...

Lora理解QLoRA

Parameter-Efficient Fine-Tuning (PEFT) &#xff1a;节约开销的做法&#xff0c;fine-tune少量参数&#xff0c;而不是整个模型&#xff1b; Low-Rank Adaptation (LoRA) &#xff1a;是PEFT的一种&#xff1b;冻结原参数矩阵&#xff0c;只更新2个小参数矩阵。 原文经过对比…...

嵌入式杂谈——什么是DMA?有什么用?

什么是DMA&#xff1f;——直接内存访问技术详解 在嵌入式系统和计算机体系结构中&#xff0c;DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09; 是一种重要的数据传输技术。它允许外设&#xff08;如UART、SPI、ADC等&#xff09;直接与内存进行数据…...

超标量处理器设计2-cache

1. cache 介绍 影响Cache缺失的情况有3种&#xff1a; Compulsory: 第一次被访问的指令或者数据肯定不会在cache中&#xff0c;需要通过预取来减少这种缺失Capcity: Cache容量越大&#xff0c;缺失就可以更少, 程序频繁使用的三个数据来源于3个set&#xff0c; 但是&#xff…...

使用Nginx正向代理让内网主机通过外网主机访问互联网

目录 环境概述 流程说明 在外网服务器上安装部署nginx? 安装前准备 下载nginx ?编译安装nginx 开始配置正向代理 创建systemd服务单元文件&#xff0c;用于管理Nginx服务的启动、停止和重新加载 启动nginx ?代理服务器本地验证 ?内网服务器验证 ?将代理地址添…...

蓝桥杯刷题第二天——背包问题

题目描述 有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c;N&#xff0c;V&am…...

DM达梦启用及收集AWR报告

1.创建DBMS_WORKLOAD_REPOSITORY系统包 查看DBMS_WORKLOAD_REPOSITORY系统包启用状态 SQL> SELECT SF_CHECK_AWR_SYS;LINEID SF_CHECK_AWR_SYS ---------- ---------------- 1 0SF_CHECK_AWR_SYS 返回值 0&#xff1a;未启用&#xff1b;1&#xff1a;已启…...

【git】如何删除本地分支和远程分支?

1.如何在 Git 中删除本地分支 本地分支是您本地机器上的分支&#xff0c;不会影响任何远程分支。 &#xff08;1&#xff09;在 Git 中删除本地分支 git branch -d local_branch_name git branch 是在本地删除分支的命令。-d是一个标志&#xff0c;是命令的一个选项&#x…...

pix2pix mmgeneration通用场景黑白图片上色模型训练,Docker

https://www.dong-blog.fun/post/1924 对于机器学习和深度学习感兴趣的读者来说,OpenMMLab 提供的 MMGeneration 库是一个绝佳的选择。最近我在阅读一篇关于 MMGeneration 的博客文章,尤其是在使用 Docker 环境进行模型和算法测试方面,受益匪浅。以下是我对目标博客内容的概…...

【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)

目录 Spring Boot中集成Redis 1.项目创建和环境配置 2.基本操作演示 Spring Boot中集成Redis Spring社区也自定义了一套Redis的客户端&#xff0c;与jedis的操作方式有所差异&#xff0c;Spring中把每个类型的操作都单独封装了起来。下面就让我来带大家了解如何在Spring Bo…...

js使用qrcode与canvas生成带logo的二维码

qrcode库 文档 https://www.npmjs.com/package/qrcode 安装 npm i qrcode 使用 errorCorrectionLevel: H // 容错率&#xff08;H是最高&#xff0c;其它看文档&#xff09; width: 200 // 大小 margin: 2 // 边距 import QRCode from qrcodeconst testFn async () > {c…...

【STM32】LED状态翻转函数

1.利用状态标志位控制LED状态翻转 在平常编写LED状态翻转函数时&#xff0c;通常利用状态标志位实现LED状态的翻转。如下所示&#xff1a; unsigned char led_turn_flag; //LED状态标志位&#xff0c;1-点亮&#xff0c;0-熄灭/***************************************函…...

FreeRTOS 简介

FreeRTOS 是一个小型、实时操作系统内核&#xff0c;专为嵌入式设备设计。它支持多任务操作、任务优先级、互斥机制和队列管理&#xff0c;是轻量级嵌入式开发中的热门选择。以下是其主要特点&#xff1a; 特点 实时性能&#xff1a;提供确定性的任务调度&#xff0c;适用于对…...

Java并发编程中的synchronized和volatile:用途解析与使用场景

目录 一、synchronized关键字&#xff1a;互斥与同步的保障 二、volatile关键字&#xff1a;轻量级的变量可见性保证 三、synchronized与volatile的区别与选择 四、总结 在Java并发编程中&#xff0c;synchronized和volatile是两个非常重要的关键字&#xff0c;它们在多线程…...

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1)

问题 项目里使用了 AzureBlob 存储了用户上传的各种资源文件&#xff0c;近期 AzureBlob 的流量费用增长很快&#xff0c;想通过分析Blob的日志&#xff0c;获取一些可用的信息&#xff0c;所以有了这个需求&#xff1a;将存储账户的日志&#xff08;读写&#xff0c;审计&…...

程序设计:排版、检验报告的上下标解决几种办法

【啰嗦两句】 本文重点在于提供几个针对排版文档、各种检验报告系统等程序设计时&#xff0c;遇到的上下标录入、绘制展示等问题的应对办法&#xff0c;但是准确地说&#xff0c;并没有非常优秀的方案。 【上下标难题】 一般的行业或许对上下标并没有严格要求&#xff0c;多数…...

【2024年华为OD机试】 (C卷,100分)- 求字符串中所有整数的最小和(Java JS PythonC/C++)

一、问题描述 题目解析 题目描述 输入字符串 s&#xff0c;输出 s 中包含所有整数的最小和。 说明 字符串 s 只包含 a-z、A-Z、、-。合法的整数包括&#xff1a; 正整数&#xff1a;一个或多个 0-9 组成&#xff0c;如 0、2、3、002、102。负整数&#xff1a;负号 - 开头&…...

MBox20网关:数字化工厂的智能加速器

在当今这个日新月异的数字化时代&#xff0c;企业对于生产效率、数据管理和网络安全的追求已经达到了前所未有的高度。特别是在制造业领域&#xff0c;随着“工业4.0”和“智能制造”概念的深入实践&#xff0c;数字化工厂已成为产业升级的必然趋势。在这场深刻的变革中&#x…...

NodeJS | 搭建本地/公网服务器 live-server 的使用与安装

目录 介绍 安装 live-server 安装方法 安装后的验证 环境变量问题 Node.js 环境变量未配置正确 全局安装的 live-server 路径未添加到环境变量 运行测试 默认访问主界面 访问文件 报错信息与解决 问题一&#xff1a;未知命令 问题二&#xff1a;拒绝脚本 公网配置…...

用C++实现一个基于模板的观察者设计模式

观察者模式 定义 观察者模式(Observer Pattern)是一种行为型设计模式,用于定义对象间的一对多依赖关系,使得当一个对象状态发生变化时,其所有依赖它的对象都会收到通知并自动更新。 核心概念 角色定义 Subject(被观察者): 持有观察者列表,维护观察者的注册和移除。 …...

LabVIEW开发X光图像的边缘检测

在医疗影像处理中&#xff0c;X光图像的分析对于骨折、肿瘤等病变的检测非常重要。X光图像中包含许多关键信息&#xff0c;然而&#xff0c;由于图像噪声的干扰&#xff0c;直接从图像中提取有用的特征&#xff08;如骨折的边缘&#xff09;变得非常困难。边缘检测作为图像处理…...

GitEE

版本控制 cvs svn git 等等 一、团队开发过程中的问题 1、备份【Release】 2、代码还原 3、协同修改 4、多版本文件管理 5、追溯问题代码的编写人和编写时间 6、权限控制 二、版本控制 版本控制就是维护工程蓝图标准做法&#xff0c;能追踪工程蓝图从诞生一直到定案的过程…...

Ubuntu配置python环境

前言 Ubuntu22.04自带python3&#xff0c;仅需要安装pip3即可。 也可以安装Anaconda使用虚拟环境。 本地Python环境 查看python3是否已安装&#xff1a; python3 -V若已安装python3&#xff0c;继续安装pip3&#xff1a; sudo apt install python3-pip查看pip版本&#xf…...

数据库的DML

1.insert 数据库于表创建成功后&#xff0c;需要向数据库的表中插入数据。在MySQL中可以使用insert语句向数据库已有的表中插入一行或者多行元组数据 基本语法&#xff1a; insert 语句有两种语法形式&#xff0c;分别是insert…values语句和insert…set语句 insert into&l…...

什么是SSL及SSL的工作流程

什么是 SSL SSL(Secure Sockets Layer,安全套接层)是一种保护互联网通信安全的加密协议,用于确保数据在客户端和服务器之间传输时的保密性、完整性和身份验证。它已被TLS(Transport Layer Security,传输层安全协议)取代,但很多场景仍习惯称其为SSL。 SSL/TLS 的主要目…...

RabbitMQ---消息确认和持久化

&#xff08;一&#xff09;消息确认 1.概念 生产者发送消息后&#xff0c;到达消费端会有以下情况&#xff1a; 1.消息处理成功 2.消息处理异常 如果RabbitMQ把消息发送给消费者后就把消息删除&#xff0c;那么就可能会导致&#xff0c;消息处理异常想要再获取这条消息的时…...

4 AXI USER IP

前言 使用AXI Interface封装IP&#xff0c;并使用AXI Interface实现对IP内部寄存器进行读写实现控制LED的demo&#xff0c;这个demo是非常必要的&#xff0c;因为在前面的笔记中基本都需哟PS端与PL端就行通信互相交互&#xff0c;在PL端可以通过中断的形式来告知PS端一些事情&…...