Leetcode 24 Swap Nodes in Pairs

题意:给定一个list of nodes,要求交换相邻的两个节点

https://leetcode.com/problems/swap-nodes-in-pairs/description/

Input: head = [1,2,3,4]

Output: [2,1,4,3]

首先你需要思考,我要交换两个节点,对于每个节点,向前指的指针会改变,🤔后指的指针也会改变,所以我需要三个指针来解决这个问题。

比较容易错的地方是prev指针指向的位置,永远应该是每一个需要改变节点的前一个指针

cpp 复制代码
/**
 * 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) {
            return nullptr;
        }
        ListNode dummy = ListNode(-1);
        dummy.next = head;
        ListNode* prev = &dummy;
        while(prev->next && prev->next->next) {
            ListNode* p1 = prev->next;
            ListNode* p2 = prev->next->next;
            p1->next = p2->next;
            p2->next = p1;
            prev->next = p2;
            prev = p1;
        }
        return dummy.next;
    }
};
相关推荐
难得的我们21 分钟前
C++与区块链智能合约
开发语言·c++·算法
diediedei36 分钟前
C++编译期正则表达式
开发语言·c++·算法
夏鹏今天学习了吗1 小时前
【LeetCode热题100(97/100)】二叉搜索树中第 K 小的元素
算法·leetcode·职场和发展
炽烈小老头1 小时前
【 每天学习一点算法 2026/01/26】缺失数字
学习·算法
小桃酥ღ1 小时前
[力扣每日习题][1339]. 分裂二叉树的最大乘积 2026.01.07
算法·leetcode·职场和发展
hrrrrb2 小时前
【算法设计与分析】贪心算法
算法·贪心算法·代理模式
TracyCoder1233 小时前
LeetCode Hot100(10/100)—— 53. 最大子数组和
算法·leetcode
Σίσυφος19003 小时前
霍夫变换vs LS vs RANSAC 拟合直线 MATLAB实现
算法·计算机视觉·matlab
假女吖☌4 小时前
限流算法-redis实现与java实现
java·redis·算法
蒟蒻的贤4 小时前
两数之和。
算法