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;
    }
};
相关推荐
Fang fan3 分钟前
Java集合
java·开发语言·算法
AI成长日志8 分钟前
【笔面试算法学习专栏】链表操作专题:反转、环形检测与合并
学习·算法·面试
njidf14 分钟前
C++与量子计算模拟
开发语言·c++·算法
阿Y加油吧17 分钟前
面试硬核双杀!合并 K 个升序链表 + LRU 缓存|力扣高频手撕原题全解
数据结构·leetcode·链表
老鼠只爱大米18 分钟前
LeetCode经典算法面试题 #70:爬楼梯(朴素递归、记忆化递归、动态规划等六种实现方案详解)
算法·leetcode·动态规划·递归·斐波那契·矩阵快速幂·爬楼梯
我材不敲代码24 分钟前
OpenCV 光流估计实战:Lucas-Kanade 算法实现运动目标跟踪
opencv·算法·目标跟踪
计算机安禾40 分钟前
【数据结构与算法】第12篇:栈(二):链式栈与括号匹配问题
c语言·数据结构·c++·学习·算法·visual studio code·visual studio
散峰而望1 小时前
【数据结构】单调栈与单调队列深度解析:从模板到实战,一网打尽
开发语言·数据结构·c++·后端·算法·github·推荐算法
qwehjk20081 小时前
内存泄漏自动检测系统
开发语言·c++·算法
tankeven1 小时前
HJ153 实现字通配符*
c++·算法