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;
    }
相关推荐
小范自学编程26 分钟前
算法训练营 Day37 - 动态规划part06
算法·动态规划
sycmancia27 分钟前
C++——C++中的类型识别
开发语言·c++
星空露珠30 分钟前
迷你世界UGC3.0脚本Wiki角色模块管理接口 Actor
开发语言·数据库·算法·游戏·lua
我星期八休息31 分钟前
深入理解哈希表
开发语言·数据结构·c++·算法·哈希算法·散列表
一叶落43838 分钟前
LeetCode 54. 螺旋矩阵(C语言详解)——模拟 + 四边界收缩
java·c语言·数据结构·算法·leetcode·矩阵
寻寻觅觅☆1 小时前
东华OJ-进阶题-19-排队打水问题(C++)
开发语言·c++·算法
王老师青少年编程1 小时前
2026年3月GESP真题及题解(C++二级):数数
c++·题解·真题·gesp·数数·二级·2026年3月
Storynone1 小时前
【Day27】LeetCode:56. 合并区间,738. 单调递增的数字
python·算法·leetcode
superkcl20221 小时前
C++初始化列表
开发语言·c++
biter down1 小时前
C++设计一个不能被拷贝的特殊类
开发语言·c++