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

2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题&题解)(C++/Java题解)

2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题&题解)(C++/Java题解)

本来想刷省赛题呢,结果一不小心刷成国赛了 真是个小迷糊〒▽〒 但,又如何( •̀ ω •́ )✧ 记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 注:感谢@Witton的提示,题目部分已完成修改( •̀ ω •́ )y 大纲: 一、子2023-(题解)-递推or动态规划 二、双子数-(题解)-筛法、类型(unsigned long long)😥 三、班级活动-(题解)-不出所料、贪心+计数 四、合并数列-(题解)-妥妥的前缀和😥,当然双指针也能做 五、数三角-(题解)-这个真的就是算术题了,还要用到各种优化(叉乘、用半径分组) 六、

By Ne0inhk
Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能 * 前言 * 第一步:加入驱动包与Maven * 第二步、创建并导入web库 * 第三步、连接本地数据库的java代码 * 核心代码讲解 * 第四步、创建数据库 * 第五步、导入并修改JSP登录文件 前言 * 在之前的博客中,我们详细探讨了 JSTL 中 SQL 标签库和自定义标签库的基础用法,并展示了如何利用这些标签库实现 MySQL 数据库连接以及数据分页展示功能。 * 本文将继续深入,介绍如何基于 MySQL 数据库实现用户登录验证功能,包括登录界面设计、用户身份验证以及登录成功 / 失败后的页面跳转处理。 我的个人主页,欢迎来阅读我的其他文章 https://blog.ZEEKLOG.net/2402_83322742?spm=1011.2415.3001.5343 我的JSP知识文章专栏 欢迎来阅读指出不足 https:

By Ne0inhk
Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416)

Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416)

Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416) * 引言: * 正文: * 一、传统公交调度的 3 大核心痛点(基于杭州公交 2023 年 Q1 数据) * 1.1 数据孤岛:调度中心 “看不见” 真实路况 * 1.2 调度被动:发班计划 “一刀切”,不贴合实际需求 * 1.3 准点率难监控:数据不准 + 无复盘 * 二、Java 大数据智能调度的技术架构(杭州公交实战版) * 2.1 架构整体设计 * 2.2 技术选型的 3 个核心考量(杭州公交实战经验) * 2.2.1

By Ne0inhk
Java 网络编程(二)—— TCP流套接字编程

Java 网络编程(二)—— TCP流套接字编程

TCP 和 UDP 的区别 在传输层,TCP 协议是有连接的,可靠传输,面向字节流,全双工 而UDP 协议是无连接的,不可靠传输,面向数据报,全双工 有连接和无连接的区别是在进行网络通信的时候,通信双方有没有保存对端的地址信息,即假设 A 和 B 进行通信,A 保存了 B 的地址信息,B 也保存了 A 的地址信息,此时双方都知道和谁建立了连接,这就是有连接的通信,在之前的 UDP 数据报套接字编程中就提到过 UDP 是无连接的,所以在发送数据报的时候要加上对端的信息,防止丢包。 可靠传输是通过各种手段来防止丢包的出现,而不可靠传输则没有做任何处理直接把数据报传输过去,但是可靠传输不意味着能 100% 把数据报完整无误地传输给对方,只是尽可能降低丢包发生的概率,并且可靠传输是要使用很多手段来保持的,所以付出的代价相比于不可靠传输要大。 面向字节流就是以字节为单位来进行数据的传输,面向数据报就是以数据报为单位进行数据的传输。 全双工就是通信的双发可以同时给对方发送数据,

By Ne0inhk