每日一题(2022-01-15):两两交换链表中的节点

每日一题(2022-01-15):两两交换链表中的节点

来源:力扣
难度:中等
题目:24. 两两交换链表中的节点

题目详情

原题截图.png

题解思路

递归,思路最简单,效率也还行,直接看代码吧,简单到可以直接念出来了……

代码结果

/**
 * 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 || !head->next) return head;

        ListNode* pFirstNode = head;
        ListNode* pSecondNode = pFirstNode->next;
        ListNode* pThirdNode = pSecondNode->next;

        pSecondNode->next = pFirstNode;
        pFirstNode->next = swapPairs(pThirdNode);

        return pSecondNode;
    }
};

运行结果.png