返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现LeetCode(24.成对交换节点)
  • 950
分享到

C++实现LeetCode(24.成对交换节点)

2024-04-02 19:04:59 950人浏览 独家记忆
摘要

[LeetCode] 24. Swap nodes in Pairs 成对交换节点 Given a linked list, swap every two adjacent

[LeetCode] 24. Swap nodes in Pairs 成对交换节点

Given a linked list, swap every two adjacent nodes and return its head.

You may not modify the values in the list's nodes, only nodes itself may be changed.

Example:

Given

1->2->3->4

, you should return the list as

2->1->4->3.

这道题不算难,是基本的链表操作题,我们可以分别用递归和迭代来实现。对于迭代实现,还是需要建立 dummy 节点,注意在连接节点的时候,最好画个图,以免把自己搞晕了,参见代码如下:

解法一:


class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode *dummy = new ListNode(-1), *pre = dummy;
        dummy->next = head;
        while (pre->next && pre->next->next) {
            ListNode *t = pre->next->next;
            pre->next->next = t->next;
            t->next = pre->next;
            pre->next = t;
            pre = t->next;
        }
        return dummy->next;
    }
};

递归的写法就更简洁了,实际上利用了回溯的思想,递归遍历到链表末尾,然后先交换末尾两个,然后依次往前交换:

解法二:


class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if (!head || !head->next) return head;
        ListNode *t = head->next;
        head->next = swapPairs(head->next->next);
        t->next = head;
        return t;
    }
};

解法三:


class Solution {
    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = head.next;
        head.next = swapPairs(newHead.next);
        newHead.next = head;
        return newHead;
    }
}

到此这篇关于c++实现LeetCode(24.成对交换节点)的文章就介绍到这了,更多相关C++实现成对交换节点内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++实现LeetCode(24.成对交换节点)

本文链接: https://lsjlt.com/news/130413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++实现LeetCode(24.成对交换节点)
    [LeetCode] 24. Swap Nodes in Pairs 成对交换节点 Given a linked list, swap every two adjacent...
    99+
    2024-04-02
  • C++怎么实现成对交换节点
    本篇内容主要讲解“C++怎么实现成对交换节点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现成对交换节点”吧!Swap Nodes in Pairs 成对交换节点Given a&nb...
    99+
    2023-06-20
  • C++如何实现成对交换节点
    这篇文章主要讲解了“C++如何实现成对交换节点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++如何实现成对交换节点”吧!Swap Nodes in Pairs 成对交换节点Given a...
    99+
    2023-06-19
  • C++实现LeetCode(237.删除链表的节点)
    [LeetCode] 237.Delete Node in a Linked List 删除链表的节点 Write a function to delete a node (exce...
    99+
    2024-04-02
  • C++实现LeetCode(160.求两个链表的交点)
    [LeetCode] 160.Intersection of Two Linked Lists 求两个链表的交点 Write a program to find the node a...
    99+
    2024-04-02
  • C++实现LeetCode(116.每个节点的右向指针)
    [LeetCode] 116. Populating Next Right Pointers in Each Node 每个节点的右向指针 You are given a ...
    99+
    2024-04-02
  • C++实现LeetCode(129.求根到叶节点数字之和)
    [LeetCode] 129. Sum Root to Leaf Numbers 求根到叶节点数字之和 Given a binary tree containing digits f...
    99+
    2024-04-02
  • C语言实现24点问题详解
    目录题目描述问题分析代码实现运行结果题目描述 在屏幕上输入1〜10范围内的4个整数(可以有重复),对它们进行加、减、乘、除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果...
    99+
    2024-04-02
  • C++实现LeetCode(117.每个节点的右向指针之二)
    [LeetCode] 117. Populating Next Right Pointers in Each Node II 每个节点的右向指针之二 Given a binary t...
    99+
    2024-04-02
  • C++实现LeetCode(19.移除链表倒数第N个节点)
    [LeetCode] 19. Remove Nth Node From End of List 移除链表倒数第N个节点 Given a linked list, remove the...
    99+
    2024-04-02
  • C++实现LeetCode(648.替换单词)
    [LeetCode] 648.Replace Words 替换单词 In English, we have a concept called root, which can...
    99+
    2024-04-02
  • C++实现LeetCode(22.生成括号)
    [LeetCode] 22. Generate Parentheses 生成括号 Given n pairs of parentheses, write a fu...
    99+
    2024-04-02
  • C语言怎么实现24点游戏计算器
    要实现24点游戏计算器,可以使用递归的方法来进行计算。以下是一个简单的C语言实现:```c#include #include #de...
    99+
    2023-08-18
    C语言
  • C++实现LeetCode(149.共线点个数)
    [LeetCode] 149. Max Points on a Line 共线点个数 Given n points on a 2D plane, find the...
    99+
    2024-04-02
  • C++实现LeetCode(101.判断对称树)
    [LeetCode] 101.Symmetric Tree 判断对称树 Given a binary tree, check whether it is a mirror of it...
    99+
    2024-04-02
  • C++实现LeetCode(97.交织相错的字符串)
    [LeetCode] 97.Interleaving String 交织相错的字符串 Given s1, s2, s3, find whether...
    99+
    2024-04-02
  • C++实现LeetCode(68.文本左右对齐)
    [LeetCode] 68.Text Justification 文本左右对齐 Given an array of words and a width maxWidth, ...
    99+
    2024-04-02
  • C++实现LeetCode(6.字型转换字符串)
    [LeetCode] 6. ZigZag Conversion 之字型转换字符串 The string "PAYPALISHIRING" is written i...
    99+
    2024-04-02
  • C++怎么实现异步数据交换
    本篇内容介绍了“C++怎么实现异步数据交换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!异步数据交换,除了阻塞函数 send() 和 rec...
    99+
    2023-07-04
  • C++集体数据交换如何实现
    本文小编为大家详细介绍“C++集体数据交换如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++集体数据交换如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、说明到目前为止介绍的功能共享一对一的关...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作