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

力扣24:两两交换链表中的节点

力扣24:两两交换链表中的节点

  • 题目
  • 思路
    • 思路1:递归
    • 思路2:迭代
  • 代码
    • 递归
    • 迭代

题目

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

思路

思路1:递归

想要完成交换我们先考虑一下什么情况下不再需要交换了,很明显就是没有节点了或者只剩下一个节点也就是节点数量分别为偶数和奇数的情况。那么我们再来想一下两个节点p->q完成交换后的next分别都是什么内容,p的next是后续完成交换的节点所以我们可以使用递归来一层一层的设置p的next,而q的next就很简单就是p。

思路2:迭代

想要正常交换两个节点我们必须知道前置节点,所以显而易见我们可以设置一个哨兵节点来当作前置节点之后就慢慢的进行一次一次的交换直到最后没有节点或者只有一个节点

代码

递归

/*** 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 == nullptr || head->next == nullptr){return head;}//p->qListNode* newhead = head->next;//qhead->next = swapPairs(newhead->next);//p->nextnewhead->next = head;//q->nextreturn newhead;}
};

迭代

/*** 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) {//哨兵节点ListNode* dummyhead = new ListNode(0);dummyhead->next = head;ListNode* tmp = dummyhead;//没有节点或者只有一个节点while(tmp ->next != nullptr && tmp->next->next != nullptr){ListNode* node1 = tmp->next;ListNode* node2 = tmp->next->next;tmp->next = node2;node1->next = node2->next;node2->next = node1;tmp = node1;}return dummyhead->next;}
};
http://www.dtcms.com/a/287398.html

相关文章:

  • SQLALchemy
  • 单元测试学习+AI辅助单测
  • 计算机网络:(十一)多协议标记交换 MPLS
  • GaussDB union 的用法
  • Java NIO Selector高并发场景下CPU占用飙升问题排查与解决方案
  • NIO零拷贝
  • MySQL的union、union all导致排序失效
  • 低输入电源5.5V/2A同步降压转换器具有多种模式选择
  • roslaunch 文件的核心语法和使用技巧
  • (LeetCode 每日一题) 1233. 删除子文件夹 (排序)
  • TCP/UDP协议深度解析(四):TCP的粘包问题以及异常情况处理
  • 7.19 换根dp | vpp |滑窗
  • 医养照护与管理实训基地建设:创新模式与突破路径
  • 扭蛋机系统开发:打造多元化娱乐生态的新引擎
  • 响应式单位rpx及搭配使用UI产品工具
  • Ambiguity-Resolved Waveform Design for Cell-free OFDM-Based ISAC Systems
  • 【MySQL笔记】视图
  • 力扣 hot100 Day49
  • day25 力扣90.子集II 力扣46.全排列 力扣47.全排列 II
  • 二、环境搭建之CentOS安装Docker
  • GitHub:只支持 Git 作为唯一的版本库格式进行托管
  • 二分查找-69.x的平方根-力扣(LeetCode)
  • 安装单机版本Redis
  • 电商商品综合排序:从需求分析到实时计算的全方位指南
  • 初识Redis---Redis的特性介绍
  • GM-3568JHF vs 普通 RK3568 开发板 — 工业应用对比文案
  • 学习 Python 爬虫需要哪些基础知识?
  • 3516cv610 npu 开发典型功能点的介绍
  • Azure Bicep 是什么?
  • leetcode_121 买卖股票的最佳时期