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

相关文章:

  • Spring生态:云原生与AI的革新突破
  • 七天学会SpringCloud分布式微服务——06——Sentinel
  • 从零到一通过Web技术开发一个五子棋
  • CSDN博客大搬家(本地下载markdown合适和图片本地化)
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生
  • 【机器人】复现 HOV-SG 机器人导航 | 分层 开放词汇 | 3D 场景图
  • 文心大模型正式开源,开启AI普惠新时代
  • vue上传各种文件,并预览组件,(预览,下载),下载resources目录下文件
  • 云上攻防—Docker安全容器逃逸特权模式危险挂载
  • 计算机网络(一)层
  • 3.前端和后端参数不一致,后端接不到数据的解决方案
  • 基于C#的OPCServer应用开发,引用WtOPCSvr.dll
  • 中钧科技亮相2025 亚欧商品贸易博览会,赋能数字经济新未来!
  • C#索引和范围:简化集合访问的现代特性详解
  • 2025年 UI 自动化框架使用排行
  • 深度模型结构选择和应用分析
  • 多重性校正:临床试验统计的关键防线
  • 自由学习记录(65)
  • 【算法】动态规划:1137. 第 N 个泰波那契数
  • python训练打卡DAY40
  • 时序数据集---UWave
  • 《燕云十六声》全栈技术架构深度解析
  • docker搭建minio和python使用minio
  • Java web1(黑马)
  • 【知识图谱构建系列7】:结果评价(1)
  • K8s环境下基于Nginx WebDAV与TLS/SSL的文件上传下载部署指南
  • 【Java面试】如何解决MQ死信队列?
  • OpenCV CUDA模块设备层----计算向量的平方根函数sqrt
  • 使用nomachine远程连接ARM设备桌面
  • C# 字符串中‘$‘和‘@‘的使用