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

跨地域传文件太麻烦?Nginx+cpolar 让本地服务直接公网访问

跨地域传文件太麻烦?Nginx+cpolar 让本地服务直接公网访问

文章目录 * 前言 * 1. 安装Docker * 2. 使用Docker拉取Nginx镜像 * 3. 创建并启动Nginx容器 * 4. 本地连接测试 * 5. 公网远程访问本地Nginx * 5.1 内网穿透工具安装 * 5.2 创建远程连接公网地址 * 5.3 使用固定公网地址远程访问 前言 Nginx 是一款轻量级 Web 服务器,能搭建本地测试环境、部署静态网站,还能做反向代理,适合开发者日常开发、测试,以及小团队搭建临时项目演示环境。它占用系统资源少,运行稳定,配置步骤也相对简单,新手也能快速上手。 使用 Nginx 时,要注意避免端口冲突,比如本地同时运行其他服务时,提前规划好 Nginx 的映射端口;另外,若用于项目演示,建议关闭不必要的服务模块,减少服务器负载,让访问更流畅。 但

By Ne0inhk
【MySQL】从零开始学习MySQL:基础与安装指南

【MySQL】从零开始学习MySQL:基础与安装指南

MySQL作为世界上最受欢迎的关系型数据库之一,在电商、SNS、论坛等场景中应用广泛。作为学计算机的,数据库的水平是衡量一个程序员水平的重要指标需要掌握MySQL。本文 将以Linux下的MySQL,从基础概念出发,完成MySQL安装。 一、MySQL基础认知:为什么选择它? 1.1什么是数据库? 简单来说,数据库是高效管理数据的工具。相比文件存储,它解决了四大问题: * 安全性:避免文件被随意修改或删除 * 易管理:支持快速查询、筛选和统计 * 可扩展:轻松应对海量数据存储 * 易集成:便于在程序中调用和操作 数据库的存储介质包括磁盘(持久化)和内存(临时缓存) 1.2主流数据库对比 选择数据库时,需根据项目规模和需求判断: * SQL Sever:微软产品,适合.NET程序员的最爱,中大型项目 * Oracle:甲骨文旗下,适合复杂业务逻辑的大型项目,但并发性能不如Mysql; * MySQL:开源免费,并发性能优秀,适合电商、

By Ne0inhk
构建基于 Rust 与 GLM-5 的高性能 AI 翻译 CLI 工具:从环境搭建到核心实现全解析

构建基于 Rust 与 GLM-5 的高性能 AI 翻译 CLI 工具:从环境搭建到核心实现全解析

前言 随着大语言模型(LLM)能力的飞速提升,将 AI 能力集成到终端命令行工具(CLI)中已成为提升开发效率的重要手段。Rust 语言凭借其内存安全、零成本抽象以及极其高效的异步运行时,成为构建此类高性能网络 IO 密集型应用的首选。本文将深度剖析如何使用 Rust 语言,结合智谱 AI 的 GLM-5 模型,从零构建一个支持流式输出、多语言切换及文件批处理的 AI 翻译引擎。 本文将涵盖环境配置、依赖管理、异步网络编程、流式数据处理(SSE)、命令行参数解析以及最终的二进制发布优化。 第一部分:Rust 开发环境的系统级构建 在涉足 Rust 编程之前,必须确保底层操作系统具备必要的构建工具链。Rust 虽然拥有独立的包管理器,但在链接阶段依赖于系统的 C 语言编译器和链接器,尤其是在涉及网络库(如 reqwest 依赖的 OpenSSL)

By Ne0inhk
抛弃 Electron!自研 C# UI 引擎XchyUI,内核仅 200KB,秒杀 Web 套壳!

抛弃 Electron!自研 C# UI 引擎XchyUI,内核仅 200KB,秒杀 Web 套壳!

6 年磨一剑!纯 C# 全自研轻量 UI 引擎|内核 < 200KB + .NET8 AOT 跨平台 + 百万数据 60fps 大家好,这是我利用6 年业余时间,历经无数次推翻重构,全链路自研的纯 C# 用户态跨平台 UI 引擎,今天第一次公开分享。 引擎的演进之路:从 WinForms + GDI 起步 → 多次架构重构 → 最终定型 GLFW + SkiaSharp深度融合业界三大核心思想: * Android View 绘制流程 * Jetpack Compose 函数式组合编程 * Flutter 渲染优化理念 当前PC客户端开发,大多基于以下技术体系: • .NET 官方框架:WinForms / WPF / WinUI / .NET

By Ne0inhk