当前位置: 首页 > news >正文

LeeCode 24. 两两交换链表中的节点

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

示例 1:

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

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

提示:

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

答案&测试代码:

void testLeeCode24(void) { // LeeCode 24. 两两交换链表中的节点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) { // LeeCode 24. 两两交换链表中的节点// 方案: 将前俩个节点调换位置。 后面的部分也这么调用,递归实现。if (!head) return nullptr;ListNode *next = head->next;if (!next) return head;ListNode *last = next->next;next->next = head;last = swapPairs(last); // 递归后面部分head->next = last;return next;}};ListNode node1 = ListNode(1);ListNode node2 = ListNode(2);ListNode node3 = ListNode(3);ListNode node4 = ListNode(4);node1.next = &node2;node2.next = &node3;node3.next = &node4;Solution solution;ListNode* res = solution.swapPairs(&node1);// 打印链表std::cout << "链表:";for (ListNode *p = res; p; p = p->next) {std::cout << p->val << " ";}std::cout << endl;
}

打印:

ok. 提交到LeeCode:

ok. 

http://www.dtcms.com/a/507699.html

相关文章:

  • 怎么查一个网站有没有做301章丘营销型网站设计公司
  • 深圳宝安网站推广昆山建设监察大队网站
  • 最近军事新闻热点大事件汉阳网站推广优化
  • 网站网格设计wordpress 无图插件
  • Java 面向对象核心知识详解
  • SpringCloud 架构在智慧交通路侧停车系统中的实践:从技术落地到城市级服务升级
  • SQLITE数据库完成数据增删改查
  • 企业高端网站建设凡客登录
  • AIOT定义Web3健康新纪元:从智能硬件到健康金融
  • 【学习系列】SAP RAP 13:行为定义-Business Event
  • 网站规划的主要内容宁波网站关键词优化代码
  • Android 中进程间通信方式
  • Android ANR 详解与实战分析:原理、监测、优化全指南(含面试高频问题)
  • 基于DSP28027的流水灯实验
  • 视频图像数据库基础服务
  • 做外贸的社交网站网站基础上添加建设方案模板
  • php网站开发工程师面试郑州网站优化渠道
  • Vue3和vue2的Diff算法有何差异?
  • C# 设计模式——观察者
  • 提供网站建设设计江西建设网站
  • 漂亮的学校网站模板下载网站建设专业性评价内容
  • 手机建设中网站做推广赚钱的网站有哪些
  • Builder 设计模式
  • 重庆永川网站建设报价什么网站必须要flash
  • 接口自动化测试概念
  • 嵌入式软件中负数如何存储
  • 【运维心得】bitlocker未解之谜:34.3%的诅咒
  • AUTOSAR图解==>AUTOSAR_AP_TR_DDSSecurityIntegration
  • 何超携Iman新马宣传 新片《拾荒法师2》将开拍
  • 实体-联系(E-R)模型