0024. 两两交换链表中的节点

0024. 两两交换链表中的节点

文章目录

题目链接

https://leetcode.cn/problems/swap-nodes-in-pairs/

题目描述

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

不能修改节点内部的值(即只能实际交换节点)。

解题思路

  • 使用哑节点 dummy 简化头结点被交换的处理。
  • 维护四个指针:
    • node0:当前待交换对的前驱节点(初始为 dummy)
    • node1:当前对的第一个节点
    • node2:当前对的第二个节点
    • node3:下一对的起始节点(node2 的后继)
  • 交换步骤(重连指针):
    • node0.next = node2
    • node2.next = node1
    • node1.next = node3
  • 然后将 node0 移到 node1,将 node1 移到 node3,继续处理下一对。
  • 循环条件为 node1 与 node1.next 都非空,保证成对交换。

题解代码

classSolution{publicListNodeswapPairs(ListNode head){ListNode dummy =newListNode(0, head);ListNode node0 = dummy;ListNode node1 = head;while(node1 !=null&& node1.next !=null){ListNode node2 = node1.next;ListNode node3 = node2.next;// 断开并重连,完成一对交换 node0.next = node2; node2.next = node1; node1.next = node3;// 移动到下一对 node0 = node1; node1 = node3;}return dummy.next;}}

复杂度分析

  • 时间复杂度:O(n),每个节点至多被访问和指针重连一次。
  • 空间复杂度:O(1),只使用常数个指针。

Read more

如何高效解决 Java 内存泄漏问题方法论

如何高效解决 Java 内存泄漏问题方法论

目录 一、系统化的诊断与优化方法论 二、获取内存快照:内存泄漏的第一步 (一)自动生成 Heap Dump (二)手动生成 Heap Dump 三、导入分析工具:MAT 和 JProfiler (一)MAT (Memory Analyzer Tool) (二)JProfiler (三)自身企业工具 四、深入分析:逐步排查内存泄漏 (一)分析 Dump Diff:内存差异对比 (二)分析 Leak Suspects:自动检测疑似泄漏对象 (三)分析 Top Components:识别内存占用大户 (四)分析 Unreachable:查找无法访问的对象

By Ne0inhk
飞算JavaAI炫技赛:电商系统商品管理模块设计与实现

飞算JavaAI炫技赛:电商系统商品管理模块设计与实现

飞算JavaAI炫技赛:电商系统商品管理模块设计与实现 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。 🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。 🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。 目录 飞算JavaAI炫技赛:电商系统商品管理模块设计与实现 需求分析与规划 一、功能需求 二、核心模块 三、技术选型 飞算JavaAI开发实录 准备AI开发提示词 需求理解阶段 接口设计阶段 表结构设计阶段 逻辑处理阶段 源码生成阶段 优化与调试心得 pom依赖 Mysql配置 redis配置 Elasticsearch配置 YAML配置文件 成果展示与总结 API接口列表 核心代码 开发总结 引用箴言 参考链接 关键词标签 需求分析与规划 一、功能需求 功能需求总览流程图 商品基本信息管理:

By Ne0inhk
ESLint 全指南:从原理到实践,构建高质量的 JavaScript/TypeScript 代码

ESLint 全指南:从原理到实践,构建高质量的 JavaScript/TypeScript 代码

文章目录 * 概述 * 一、 核心原理:深入理解 ESLint 的工作机制 * 流程图:ESLint 核心工作流程 * 二、 基础实战:快速上手与配置 * 1. 安装 ESLint * 2. 初始化配置文件 * 3. 配置文件深度解析 * 流程图:ESLint 配置解析与合并 * 4. 运行与忽略 * 三、 进阶之道:构建现代化前端工程规范 * 1. 使用共享配置 * 2. 完美集成 TypeScript * 3. 与 Prettier 和平共处 * 4. 性能优化 * 四、 生态集成:无缝融入开发工作流 * 1. 编辑器集成 * 2. 构建工具集成 * 3. CI/CD 集成

By Ne0inhk
Java 手写 AI Agent:ZenoAgent 实战笔记

Java 手写 AI Agent:ZenoAgent 实战笔记

摘要:作为一个长期使用 Java 的后端开发者,我对 AI Agent 的内部运作机制充满了好奇。为了深入理解 Agent 的工作原理,我决定动手写一个简单的 Agent 系统 —— ZenoAgent。本文记录了我在这个过程中的学习心得与技术实践,包括如何手写 ReAct 循环、在分布式环境下实现 Human-in-the-loop、尝试复刻类 o1 的流式思考以及探索错误处理机制。希望这些踩坑经验能给同样想探索 AI 的 Java 开发者一些参考。 👀 在线体验:项目已部署上线,欢迎试玩:线上部署地址 (注:受限于服务器资源,线上本地部署了 Qwen3:8B 模型(参见另一篇博文华为云服务器本地部署大模型实战),虽不如商业模型聪明,但足以演示 Agent 的核心能力) 💡 写在前面:我的学习初衷 市面上已经有了像 LangChain 和 AutoGen

By Ne0inhk