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;
    }
相关推荐
Matlab光学几秒前
Matlab 复现:分数阶&整数阶OAM 变换
算法·matlab·拓扑学
七点半77012 分钟前
FFmpeg C++ AI视觉开发核心手册 (整合版)适用场景:视频流接入、AI模型预处理(抽帧/缩放/格式转换)、高性能算法集成。
c++·人工智能·ffmpeg
Severus_black15 分钟前
C实现双向链表和相关函数!巨详细!
c语言·数据结构·链表·list
凌波粒18 分钟前
LeetCode--459.重复的子字符串(字符串/KMP算法)
算法·leetcode·职场和发展
_深海凉_20 分钟前
LeetCode热题100-移除元素
数据结构·算法·leetcode
Makoto_Kimur20 分钟前
Java Scanner 的 ACM 常用输入模板
java·数据结构·算法
A.A呐22 分钟前
【C++第二十八章】单例模式
c++·单例模式
逆境不可逃25 分钟前
【后端新手谈09】深入浅出短链接:从原理到实战开发
算法·面试·职场和发展
DeepModel30 分钟前
通俗易懂讲透随机梯度下降法(SGD)
人工智能·python·算法·机器学习
玖釉-30 分钟前
C++ 硬核剖析:if 语句中的“双竖杠” || 到底怎么运行的?
开发语言·c++