LeetCode [24] 两两交换链表中的节点

24. 两两交换链表中的节点 - 力扣(LeetCode)

  1. 递归确实np
cpp 复制代码
ListNode* swapPairs(ListNode* head) {
        if(head == nullptr || head->next == nullptr)
            return head;
        ListNode* p1 = head;
        ListNode* p2 = head->next;
        
        p1->next = swapPairs(p2->next);
        p2->next = p1;
        return p2;
    }
  1. 迭代法--难搞
cpp 复制代码
ListNode* swapPairs(ListNode* head) {
        if(head == nullptr || head->next == nullptr)
            return head;
        ListNode* p1 = head;
        ListNode* p2 = p1->next;
        ListNode* p3 = p2->next;
        //p1->next = p3;
        //p2->next = p1;
        ListNode* ret = p2;
        ListNode* tail = p1;
        while(p3 && p3->next)
        {
            tail = p1;
            p1->next = nullptr;
            p2->next = p1;

            p1 = p3;
            p2 = p3->next;
            p3 = p2->next;
            tail->next = p2;
        }
        tail->next = p2;
        p1->next = p3;
        p2->next = p1;
        
        return ret;
    }
相关推荐
程与留2 小时前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt
地平线开发者3 小时前
【模型轻量化专题】衡量模型轻量性的指标
算法
程与留4 小时前
14_Qt 样式表(QSS)入门(语法、选择器、美化实战)
c++·qt
学习星球6 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)
算法·面试·前端框架
欧特克_Glodon12 小时前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
蒸蒸yyyyzwd12 小时前
cpp 选手秋招学习笔记 day21
c++·面试·八股
alphaTao12 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid11212 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余1 天前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI情绪识别开源1 天前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试