首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【链表 - LeetCode】24. 两两交换链表中的节点

【链表 - LeetCode】24. 两两交换链表中的节点

作者头像
Lokinli
发布2025-08-23 08:09:56
发布2025-08-23 08:09:56
1930
举报
文章被收录于专栏:以终为始以终为始

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

题解:

- 迭代

首先是直接遍历的做法,这里注意调整指针指向的顺序。

代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode * dummyHead = new ListNode(0);
        dummyHead -> next = head;
        ListNode * tmp = dummyHead;
        ListNode*first, *second; // 反转前后用到的临时节点
        while(tmp->next!=nullptr && tmp->next->next!=nullptr){
            first = tmp->next;
            second = tmp->next->next;
            // 先调整tmp,再调整 first,再调整 second
            tmp -> next = second;
            first -> next = second -> next;
            second -> next = first;
            tmp = first;
        }
        ListNode * ans = dummyHead -> next;
        delete dummyHead;
        return ans;
    }
};

- 递归

递归的本质在于直接处理最小子集。

代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head == nullptr || head -> next == nullptr){
            return head;
        }
        ListNode *newHead = head -> next;
        head -> next = swapPairs(newHead -> next);
        newHead -> next = head;
        return newHead;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档