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;
    }
相关推荐
CoovallyAIHub14 分钟前
数据集分享 | 电子元件检测数据集
深度学习·算法·计算机视觉
lifallen18 分钟前
Java stream 并发问题
java·开发语言·数据结构·算法
恒者走天下28 分钟前
cpp c++面试常考算法题汇总
c++
寻星探路35 分钟前
二叉树(全)
算法
亮亮爱刷题37 分钟前
算法能力提升之快速矩阵
数据结构·算法·矩阵
ATaylorSu38 分钟前
排序算法入门:直接插入排序详解
笔记·学习·算法·排序算法
野原鑫之祝40 分钟前
嵌入式开发学习———Linux环境下数据结构学习(五)
linux·c语言·数据结构·学习·vim·排序算法·嵌入式
桦01 小时前
[除自身以外数组的乘积]
算法
2301_809561521 小时前
c++day5
java·c++·面试
草莓熊Lotso2 小时前
【数据结构初阶】--二叉树(五)
c语言·数据结构·经验分享·笔记·其他