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

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.lryc.cn/news/2393662.html

相关文章:

  • 【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • Windows 安装 WSL2 并运行 Ubuntu 22.04 指南
  • AI情感陪伴在医疗领域的核心应用潜力
  • 【计算机网络】第1章:概述—分组延时、丢失和吞吐量
  • Python Day38
  • DeepSeek R1 模型小版本升级,DeepSeek-R1-0528都更新了哪些新特性?
  • 线路板厂家遇到的PCB元件放置的常见问题有哪些?
  • 【C/C++】无限长有序数组中查找特定元素
  • SQL正则表达式总结
  • 力扣经典算法篇-13-接雨水(较难,动态规划,加法转减法优化,双指针法)
  • STM32 -- USB虚拟串口通信
  • uni-app开发特殊社交APP
  • Linux中Shell脚本的常用命令
  • RabbitMQ项目实战
  • 安卓开发用到的设计模式(3)行为型模式
  • 生成模型:从数据学习到创造的 AI 新范式
  • 尚硅谷redis7 90-92 redis集群分片之集群扩容
  • RabbitMQ性能调优:关键技术、技巧与最佳实践
  • 系统架构中的组织驱动:康威定律在系统设计中的应用
  • TypeScript 中高级类型 keyof 与 typeof的场景剖析。
  • Android LiveData 详解
  • 为什么共现矩阵是高维稀疏的
  • 离散化算法的二分法应用
  • IntelliJ IDEA 中进行背景设置
  • Dart语言学习指南「专栏简介」
  • AWS之AI服务
  • Docker 部署项目
  • 半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司
  • (c++)string的模拟实现
  • 一种通用图片红色印章去除的工具设计