代码随想录 第二章 链表 24. 两两交换链表中的节点

代码随想录 第二章 链表 24. 两两交换链表中的节点

题目:力扣链接

  • 题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

一、思想

通过虚拟头节点简化边界条件处理,使用指针两两交换相邻节点。具体步骤是:

  1. 保存当前对的首节点和下一对节点的起始位置。
  2. 交换当前对的两个节点,并更新指针指向。
  3. 移动指针到下一对节点的前一个位置,重复上述步骤,直到链表遍历完毕。

二、代码

/**
 * 定义解决方案类
 */
class Solution
{
public:
    /**
     * 交换链表中的每两个相邻节点
     * @param head 链表的头节点
     * @return 交换后的链表头节点
     */
    ListNode *swapPairs(ListNode *head)
    {
        // 创建虚拟头节点,简化边界条件处理
        ListNode *dummy = new ListNode(0, head);
        // cur指针用于遍历链表
        ListNode *cur = dummy;
        // 定义两个临时指针用于节点交换
        ListNode *nextPair, *thisPair;
    
        // 当存在至少两个节点时进行交换
        while (cur->next && cur->next->next) {
            // 保存下一对节点的起始位置
            nextPair = cur->next->next->next;
            // 保存当前对的首节点
            thisPair = cur->next;
        
            // 交换节点:
            // 1. 将cur的next指向第二个节点
            cur->next = cur->next->next;
            // 2. 将第二个节点的next指向第一个节点
            cur->next->next = thisPair;
            // 3. 将第一个节点的next指向下一对节点
            thisPair->next = nextPair;
        
            // 移动cur指针到下一对节点的前一个位置
            cur = cur->next->next;
        }
        // 返回交换后的链表头节点
        return dummy->next;
    }
};

三、代码解析

1. 算法工作原理分解

  1. 初始化虚拟头节点

    • 创建虚拟头节点 dummy​,并将其 next​ 指向链表头节点,简化边界条件处理。
    • 使用 cur​ 指针遍历链表,初始指向 dummy​。
  2. 交换相邻节点

    • 保存当前对的首节点 thisPair​ 和下一对节点的起始位置 nextPair​。
    • cur->next​ 指向第二个节点,完成第一个交换。
    • 将第二个节点的 next​ 指向第一个节点,完成第二个交换。
    • 将第一个节点的 next​ 指向 nextPair​,完成当前对的交换。
  3. 移动指针

    • cur​ 指针移动到下一对节点的前一个位置,继续处理下一对节点。
  4. 返回结果

    • 返回 dummy->next​,即交换后的链表头节点。

2. 关键点说明

  • 虚拟头节点:简化边界条件处理,避免单独处理头节点交换。
  • 指针保存:使用 thisPair​ 和 nextPair​ 保存节点信息,防止丢失链表连接。
  • 交换逻辑:通过三步操作完成相邻节点的交换,确保链表连接正确。

四、复杂度分析

  • 时间复杂度O(n)

    • 需要遍历整个链表一次,时间复杂度为 O(n)​,其中 n​ 是链表的长度。
    • 每个节点只需处理一次,因此时间复杂度为线性。
  • 空间复杂度O(1)

    • 只使用了常数级别的额外空间(虚拟头节点和指针 cur​、thisPair​、nextPair​)。
    • 无论链表长度如何,额外空间都是固定的。
内容概要:本文围绕“考虑电动汽车聚合可调节能力的含波动性电源电氢耦合系统多目标优化运行”展开研究,提出了一种基于Matlab代码实现的多目标优化模型。该模型深度融合电-氢耦合系统与高比例波动性可再生能源(如风电、光伏),充分挖掘电动汽车(EV)集群作为移动储能单元的灵活调节潜力,通过聚合调控提升系统对新能源的消纳能力与运行经济性。研究系统构建了电动汽车可调度能力、电解水制氢与储氢动态过程、多能源协同互补的优化调度框架,并结合智能优化算法实现经济性、低碳性与运行稳定性等多重目标的协同优化。文中配套提供了完整的Matlab仿真代码、相关数据及可能的论文支撑材料,极大地方便了模型的复现、验证与后续深化研究。; 适合人群:具备电力系统、综合能源系统、优化理论或新能源技术等相关领域基础知识的研究生、科研人员,以及从事新型电力系统规划、清洁能源消纳与智慧能源管理的工程技术人员。; 使用场景及目标:①开展高渗透率可再生能源接入下的综合能源系统多目标优化调度研究;②探究电动汽车集群在电网削峰填谷、平抑新能源出力波动及提供辅助服务方面的应用价值与潜力;③学习并掌握电氢耦合系统的建模方法、多目标优化求解技术及其在Matlab/Simulink环境下的仿真实现流程。; 阅读建议:此资源不仅提供可运行的代码,更蕴含了前沿的科研思路与创新方法,建议读者结合所提供的代码、数据与可能的论文文档,系统性地学习从问题建模、算法设计到仿真分析的完整科研过程,并重点关注其中关于需求侧资源聚合、多能互补协同与绿色低碳运行的核心理念。
内容概要:本文档名为《经济学期刊论文复现:数字化转型能促进企业的高质量发展吗》,面上聚焦于经济学领域中数字化转型对企业高质量发展影响的研究,实则是一份涵盖多学科交叉的科研仿真代码资源合集。资源以Matlab、Simulink、Python为主要工具,系统整合了电力系统仿真、微电网优化调度、路径规划、信号处理、图像处理、机器学习预测模型等方向的可复现算法与仿真模型。尽管标题指向经济学实证分析,但内容重心在于提供顶级期刊论文的复现代码,如企业全要素生产率(TFP)测算方法(OL、FE、LP、OP、GMM)、风光储氢系统优化、需求响应与综合能源系统调度等,并融合智能优化算法与深度学习技术进行数据建模与预测分析,体现出极强的工程化与科研实用性。; 适合人群:具备一定编程基础,熟练掌握Matlab/Simulink/Python等仿真工具,从事工程仿真、经济实证研究或交叉学科科研工作的研究生、高校教师及科研人员。; 使用场景及目标:① 复现经济学顶刊论文中的计量经济模型,深入探究数字化转型对企业全要素生产率的影响机制;② 借助提供的代码资源开展电力系统故障仿真、微电网优化、多能系统调度等科研项目的算法验证与仿真分析;③ 应用机器学习与深度学习模型完成负荷预测、风电光伏出力预测、电池健康状态评估等典型实证任务; 阅读建议:此资源虽冠以经济学论文之名,实质为多领域高价值仿真代码集成,建议读者依据自身研究方向筛选适配内容,优先关注“顶刊复现”“论文复现”类项目,结合配套数据与代码进行实证推演,并通过公众号“荔枝科研社”获取完整资料与持续技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值