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;
    }
};
相关推荐
罗西的思考5 分钟前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 — (14)— Teacher
人工智能·笔记·深度学习·算法·机器学习
塔能物联运维15 分钟前
塔能两相液冷:600W/cm²极限能力,为下一代AI芯片预留充足散热余量
人工智能·算法·两相液冷
醉城夜风~41 分钟前
手撕 C++ string:从零实现一个简易字符串类
开发语言·c++·算法
手写码匠1 小时前
华为云Flexus+DeepSeek征文|DeepSeek+RAG知识库实战:基于Flexus X实例与Dify构建企业级智能问答系统
人工智能·深度学习·算法·aigc
zander2582 小时前
LeetCode 46. 全排列
算法·leetcode·深度优先
星恒随风2 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
Lumos1862 小时前
《ESP32 物联网全栈实战-02》ESP-IDF 工程结构
算法
QN1幻化引擎3 小时前
把 意识评测做成了一场"非侵入实验":不碰生产代码,分数反而更真了
人工智能·算法·架构
冻柠檬飞冰走茶3 小时前
PTA基础编程题目集 7-17 爬动的蠕虫(C语言实现)
c语言·开发语言·数据结构·算法
会编程的土豆4 小时前
LeetCode 热题 HOT100(一):哈希表与双指针入门(Go 实现)
算法·leetcode·职场和发展