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

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

1. 递归确实np

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;
    }

2. 迭代法--难搞

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;
    }

相关推荐

  1. leetcode24. 交换节点

    2023-12-29 08:02:01       66 阅读
  2. LeetCode [24] 交换节点

    2023-12-29 08:02:01       67 阅读
  3. Leetcode24. 交换节点

    2023-12-29 08:02:01       64 阅读
  4. LeetCode24.交换节点

    2023-12-29 08:02:01       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 08:02:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 08:02:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 08:02:01       82 阅读
  4. Python语言-面向对象

    2023-12-29 08:02:01       91 阅读

热门阅读

  1. Kotlin 派生类

    2023-12-29 08:02:01       51 阅读
  2. Go面试题学习

    2023-12-29 08:02:01       65 阅读
  3. Leetcode 509 斐波那契数

    2023-12-29 08:02:01       46 阅读
  4. 什么是ETL?

    2023-12-29 08:02:01       54 阅读
  5. 【Delphi 基础知识 4】类是如何被实例化的?

    2023-12-29 08:02:01       62 阅读
  6. win10 vs c++ 安装vcpkg 类似于pip

    2023-12-29 08:02:01       59 阅读
  7. 案例系列:IBM反洗钱交易数据_GNN节点分类检测

    2023-12-29 08:02:01       43 阅读