当前位置: 首页 > 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.lqws.cn/news/579367.html

相关文章:

  • 键盘第一下无反应
  • Armbian 25.5.1 Noble Gnome 开启远程桌面功能
  • CMake中WIN32和CMAKE_HOST_WIN32的使用差异
  • Pytest pytest_runtest_makereport 钩子函数:测试失败信息收集与处理 —— Python 实践
  • (5)pytest-yield操作
  • Python量化金融:从数据到策略的工程实现
  • Serverless 架构入门与实战:AWS Lambda、Azure Functions、Cloudflare Workers 对比
  • CH32H417 替代 Cypress FX3 及优势探讨
  • RF100:多领域目标检测基准数据集(猫脸码客第284期)
  • Ubuntu更换Home目录所在硬盘的过程
  • 多重性校正:临床试验统计的关键防线
  • 文心大模型正式开源,开启AI普惠新时代
  • langchain从入门到精通(二十)——自定义文档加载器使用技巧及Blob 方案介绍
  • 佰力博科技与您探讨阻抗谱测量的基本原理和测量方法
  • web服务器搭建nginx
  • [特殊字符]【联邦学习实战】用 PyTorch 从 0 搭建一个最简单的联邦学习系统(含完整代码)
  • Python-Word文档、PPT、PDF以及Pillow处理图像详解
  • Objective-c把字符解析成字典
  • Python 数据分析与机器学习入门 (六):Seaborn 可视化技巧,图表更美观
  • 车间管理系统架构深度解析:高可用设计+工具技术选型指南
  • 机器学习,支持向量机svm和决策树xgboost介绍
  • WINDOWS最快布署WEB服务器:apache2
  • tcpdump工具交叉编译
  • 【运维系列】【ubuntu22.04】安装GitLab
  • C++STL容器:链表介绍与使用
  • Linux 日志监控工具对比:从 syslog 到 ELK 实战指南
  • 【PHP】.Hyperf 框架-collection 集合数据(内置函数归纳-实用版)
  • PHP学习笔记(十二)
  • 【Java面试】10GB,1GB内存,如何排序?
  • 时序数据库IoTDB监控指标采集与可视化指南