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

力扣 hot100 Day30

21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

//自己写的
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if(list1 == nullptr) return list2;else if(list2 == nullptr) return list1;   ListNode * head;if(list1->val>=list2->val){head = list2;list2 = list2->next;}else{head = list1;list1 = list1->next;}ListNode * cur = head;        while(list1 && list2){if(list1->val>=list2->val){cur->next=list2;list2 = list2->next;               }else{cur->next=list1;list1 = list1->next;}cur = cur->next; }cur->next = list1 ? list1 : list2;return head;}
};

逻辑很简单,但这里写的太冗杂了,因为要记录head,需要在head赋值后用cur复制,所以第一次判断不在循环里,很难看。

//ai写的
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode dummy(0);  // 虚拟头节点ListNode* tail = &dummy;  // 尾指针,初始指向dummywhile (list1 && list2) {if (list1->val <= list2->val) {tail->next = list1;list1 = list1->next;} else {tail->next = list2;list2 = list2->next;}tail = tail->next;}// 处理剩余部分tail->next = list1 ? list1 : list2;return dummy.next;  // 返回合并后的头节点}
};

这里用一个虚拟头节点,使得逻辑和格式简洁许多,最后返回时也能使用。

//抄的
class Solution {
public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if (l1 == nullptr) {return l2;} else if (l2 == nullptr) {return l1;} else if (l1->val < l2->val) {l1->next = mergeTwoLists(l1->next, l2);return l1;} else {l2->next = mergeTwoLists(l1, l2->next);return l2;}}
};

递归法,挺好理解的,适合面试用(估计也很难有简单题)

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

相关文章:

  • 开疆智能CCLinkIE转Canopen网关连接台达伺服驱动器配置案例
  • 自己电脑搭建本地服务器并实现公网访问,内网也能提供互联网连接使用
  • 七层负载均衡和四层负载均衡
  • 打卡day58
  • 数据库表关系设计详解:一对一、一对多、多对多及自关联
  • ShardingSphere完成MySQL集群部署
  • Vue3静态文档资源展示的实现和使用总结
  • 国产车哪款有远程代驾功能?远程代驾+自动驾驶
  • DDoS攻击及其防护方案
  • 超大js文件多层级引用缓存在网络较差的时候无法调用使用问题
  • Rust C++ OpenCV kafka-rs实践
  • 生成式人工智能实战 | 变分自编码器(Variational Auto-Encoder, VAE)
  • 二刷 苍穹外卖day09
  • macos 安装 xcode
  • 借助 KubeMQ 简化多 LLM 集成
  • 深度学习专栏总结
  • 生信分析之流式数据分析:Flowjo 软件核心功能全解析
  • Openssl升级
  • 使用 LoRA 微调大模型:关键参数与最佳实践全解析
  • 深度解析基于贝叶斯的垃圾邮件分类
  • 数字孪生技术为UI前端注入灵魂:实现产品全生命周期的可视化管理
  • 银河麒麟系统上利用WPS的SDK进行WORD的二次开发
  • linux docker 客户端操作数据卷
  • Excel转pdf实现动态数据绑定
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的校园服务平台管理系统,推荐!
  • 【甲方安全建设】敏感数据检测工具 Earlybird 安装使用详细教程
  • 6月30日作业
  • AR 学习:开启未来学习新视界​
  • 深入解析TCP:可靠传输的核心机制与实现逻辑
  • 7,FreeRTOS列表与列表项的插入删除