每天一道算法题【蓝桥杯】【两两交换链表中的节点】 ...

打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039


思路

本质题目可以分成多少个子题目
即把前两个链表交换,并与后面的链表相连
故实现函数功能调用自身递归即可
  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. struct ListNode {
  3.      int val;
  4.       ListNode *next;
  5.       ListNode() : val(0), next(nullptr) {}
  6.      ListNode(int x) : val(x), next(nullptr) {}
  7.     ListNode(int x, ListNode *next) : val(x), next(next) {}
  8. };
  9. class Solution {
  10. public:
  11.     ListNode* swapPairs(ListNode* head) {
  12.         if (head == nullptr || head->next == nullptr)return head;   //遍历到末尾时返回最后一个节点
  13.         auto tmp = swapPairs(head->next->next);               //调用自身实现链表交换
  14.         auto ret = head->next;                       //预先储存返回的头节点
  15.         head->next->next = head;                 //实现功能
  16.         head->next = tmp;
  17.         return ret;
  18.     }
  19. };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表