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

LeetCode热题100--206.反转链表--简单

1. 题目

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

示例 1:
请添加图片描述
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:
请添加图片描述
输入:head = [1,2]
输出:[2,1]

示例 3:
输入:head = []
输出:[]

2. 题解

/*** 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) {ListNode pre = null;ListNode cur = head;while(cur != null){ListNode nxt = cur.next;cur.next = pre;pre = cur;cur = nxt;}return pre;}
}

3. 解析

依旧是灵茶山艾府:【视频讲解】反转链表 O(1) 空间写法,附题单(Python/Java/C++/C/Go/JS/Rust)

  1. class Solution { … } - 定义了一个名为Solution的类。

  2. 2-5. ListNode reverseList(ListNode head) { … } - 这个方法接受一个参数,即链表的头节点。它返回反转后的链表的新头节点。

  3. 6-10. ListNode pre = null; ListNode cur = head; while (cur != null) {…} - 初始化两个变量:一个用于跟踪前一个节点(pre),另一个用于当前节点(cur)。然后进入循环,只要当前节点不为null就继续执行。

  4. 11-14. ListNode nxt = cur.next; cur.next = pre; pre = cur; cur = nxt; - 在这段代码中,我们首先将下一个节点的引用保存在nxt变量中(因为一旦改变cur.next,就无法获取到原始的下一个节点了)。然后我们“旋转”链表,通过将当前节点的指针指向前一个节点(pre)来实现。然后更新pre和cur以继续处理剩余的列表。

  5. return pre; - 当while循环结束时,cur将是null(因为我们已经遍历了所有元素并到达末尾),而pre成为了原始链表的最后一个节点,也就是反转后的新头节点,所以返回它。

  6. 这段代码的时间复杂度为O(n),其中n是单链表中的节点数,因为我们需要遍历整个列表一次来完成操作。空间复杂度为O(1),因为我们在原地修改指针而没有使用额外的数据结构。

http://www.lryc.cn/news/2378807.html

相关文章:

  • 来一个复古的技术FTP
  • OpenCV CUDA模块中矩阵操作------分布统计类
  • OpenWebUI新突破,MCPO框架解锁MCP工具新玩法
  • go.mod关于go版本异常的处理
  • TRTC实时对话式AI解决方案,助力人机语音交互极致体验
  • Linux安全篇 --firewalld
  • 系分论文《论系统需求分析方法及应用》
  • LIIGO ❤️ RUST: 12 YEARS
  • SQL、Oracle 和 SQL Server 的比较与分析
  • Trivy:让你时刻掌控的开源安全扫描器
  • LlamaIndex 第八篇 MilvusVectorStore
  • 2022河南CCPC(前四题)
  • 谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程
  • 高可用消息队列实战:AWS SQS 在分布式系统中的核心解决方案
  • 「Mac畅玩AIGC与多模态41」开发篇36 - 用 ArkTS 构建聚合搜索前端页面
  • springCloud/Alibaba常用中间件之Seata分布式事务
  • Datawhale FastAPI Web框架5月第1次笔记
  • 操作系统:os概述
  • LLaMA-Factory:环境准备
  • ArrayList-集合使用
  • 一分钟用 MCP 上线一个 贪吃蛇 小游戏(CodeBuddy版)
  • pytorch小记(二十二):全面解读 PyTorch 的 `torch.cumprod`——累积乘积详解与实战示例
  • TTS:F5-TTS 带有 ConvNeXt V2 的扩散变换器
  • 强化学习笔记(一)基本概念
  • 大型语言模型中的QKV与多头注意力机制解析
  • 基于地图的数据可视化:解锁地理数据的真正价值
  • 利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析
  • 分布式链路跟踪
  • 刷leetcodehot100返航版--二叉树
  • chmod 777含义: