[每日一题][找工作第24天][2025-10-16] Leetcode 24. 两两交换链表中的节点(又一不小心击败100%😊)

题目

24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
 
示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
 
提示:

  • 链表中节点的数目在范围 [0, 100] 内
  • 0 <= Node.val <= 100

我的代码(C++)

/**
 * 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* fakeHead = new ListNode(0, head);
        ListNode* tmp1 = fakeHead;
        ListNode* tmp2 = head->next;
        while (tmp1 && tmp2) {
            ListNode* curr = tmp1->next;
            ListNode* next = tmp2->next;
            tmp1->next = tmp2;
            tmp2->next = curr;
            curr->next = next;
            tmp1 = tmp1->next->next;
            if (!next) {
                break;
            }
            tmp2 = next->next;
        }
        return fakeHead->next;
    }
};

点评

奇怪这种题目为什么难度是中等。
实现起来就是计算复杂一些,边界条件麻烦一点而已。
至于比较结果……懒得再想了。


baddif@gmail.com

AI简历优化站

Nonpareil.me:优化简历,助力职场
开源代码

AI求职跟踪器(建设中)

开源代码

主站(建设中)

Nonpareil Me

相关平台

Github Issues / Notion / Blog

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部