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

leetcode hot100刷题日记——29.合并两个有序链表

在这里插入图片描述
解答:

方法一:递归
递归的边界条件是啥呢?
递归别想那么多具体步骤,考虑大步骤,小的递归自己会去做的

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {//递归比较大小//先考虑递归边界是什么?//如果一条链表遍历到了空节点,说明另一条链表已经排好序了//返回另一条链表if(!list1){return list2;}if(!list2){return list1;}//如果两条链表都还是非空,说明还在递归过程中//如果list1的当前节点值<list2的当前节点值// 那么我们应该把递归返回的链表放在list1的后面if(list1->val<list2->val){list1->next=mergeTwoLists(list1->next,list2);return list1;}//否则,我们就应该把递归返回的链表放在list2的后面list2->next=mergeTwoLists(list1,list2->next);return list2;}
};

时间复杂度:O(n+m)
空间复杂度:O(n+m)

方法二:迭代
参考灵山大大的题解写的
哨兵节点其实就是虚拟头节点

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode dummy{};auto cur=&dummy;while(list1&&list2){if(list1->val<list2->val){cur->next=list1;list1=list1->next;}else{cur->next=list2;list2=list2->next;}cur=cur->next;}cur->next=list1?list1:list2;return dummy.next;}
};

时间复杂度:O(n+m)
空间复杂度:O(1)

http://www.xdnf.cn/news/10056.html

相关文章:

  • IntelliJ IDEA 中进行背景设置
  • ASP.NET MVC添加模型示例
  • 手机照片太多了存哪里?
  • 使用逆强化学习对网络攻击者的行为偏好进行建模
  • GROMACS 软件包介绍与使用指南
  • 负载均衡群集---Haproxy
  • 不用 apt 的解决方案(从源码手动安装 PortAudio)
  • ReactHook有哪些
  • 物流项目第十期(轨迹微服务)
  • 实现一个免费可用的文生图的MCP Server
  • OpenCV---minAreaRect
  • RK3588和FPGA桥片之间IO电平信号概率性不能通信原因
  • 使用摄像头推流+VLC软件拉流
  • Spring Boot微服务架构(九):设计哲学是什么?
  • FreeRTOS通俗理解指南:基础概念 + 架构+ 内核组件+练手实验
  • Paraformer语音模型:一种语音模型加速方法
  • deepseek问答记录:请讲解一下torch.full_like()
  • adb 常用命令笔记
  • 02 APP 自动化-Appium 运行原理详解
  • 【cpp-httplib】 安装与使用
  • 【ArcGIS微课1000例】0147:Geographic Imager6.2下载安装教程
  • PCB设计实践(三十)地平面完整性
  • 【孙悟空喝水】2022-2-7
  • 使用flex实现三栏布局,两边固定,中间自适应
  • 烟草工业数字化转型:科技领航,重塑传统产业新生态
  • OpenCV中的重要、常用知识点汇总(图像处理、特征检测与匹配、图像分割与轮廓分析、视频处理与分析和机器学习与深度学习等)
  • 强化学习的前世今生(五)— SAC算法
  • WPF的交互核心:命令系统(ICommand)
  • golang 实现基于redis的并行流量控制(计数锁)
  • Joern项目第三方库依赖分析