合并两个有序数组(88)合并两个有序链表(21)

embedded/2025/1/24 0:08:40/

88. 合并两个有序数组 - 力扣(LeetCode)

21. 合并两个有序链表 - 力扣(LeetCode)

解法(88):

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {for (; m > 0; --m){for (; n > 0; --n) {//从两个数组的尾->头开始比较if (nums1[m - 1] <= nums2[n - 1]) {nums1[m + n - 1] = nums2[n - 1];}else {nums1[m + n - 1] = nums1[m - 1];break;}}if (n == 0) {break;}}  if (n > 0) {for (int i = 0; i < n; ++i) {nums1[i] = nums2[i];}}}
};

解法(21):

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if (list2 == nullptr) {return list1;}if (list1 == nullptr) {return list2;}ListNode * tmp1 = list1;ListNode * tmp2 = list2;//用来记录tmp1 指针的 pre 指针ListNode * tmp1_pre = nullptr;while (tmp1 != nullptr && tmp2 != nullptr) {ListNode * next1_ = tmp1->next;ListNode * tmp2_ = tmp2;if (tmp1->val == tmp2->val) {tmp2 = tmp2->next;tmp1->next = tmp2_;tmp2_->next = next1_;}else if (tmp1->val > tmp2->val) {tmp2 = tmp2->next;swap(tmp1->val, tmp2_->val);tmp1->next = tmp2_;tmp2_->next = next1_;}tmp1_pre = tmp1;tmp1 = tmp1->next;}if (tmp2 != nullptr) {tmp1_pre->next = tmp2;}return list1;}};

总结:

(88)和(21)的时间复杂度都是O(m+n),空间复杂度都是O(1)。这里面有序数组为了做到空间复杂度O(1),需要从尾->头开始进行比较,而有序链表因为允许随机insert和delete,所以从头->尾开始进行比较


http://www.ppmy.cn/embedded/156431.html

相关文章

【玩转全栈】---基于YOLO8的图片、视频目标检测

本篇主要讲YOLO8的具体操作&#xff0c;想要了解YOLO的具体原理&#xff0c;可以去官网查询 目录 下载ultralytics库 开始检测 介绍 YOLOv8&#xff08;You Only Look Once Version 8&#xff09;是 YOLO 系列的最新版本&#xff0c;由 Ultralytics 开发并发布&#xff0c;是一…

面试-二维数组

应用 快递业务有N个站点&#xff0c;1<N<10000&#xff1b;站点0、站点1可达&#xff0c;记作0-1&#xff1b;如果0-1、1-2&#xff0c;则站点0、站点2可达&#xff0c;记作0-2&#xff1b;s[i][j]1表示i-j可达&#xff0c;反之s[i][j]0表示i-j不可达&#xff1b;s[i][j…

高水平EI会议-第四届机器学习、云计算与智能挖掘国际会议

一、会议信息 大会名称&#xff1a;第四届机器学习、云计算与智能挖掘国际会议&#xff08;MLCCIM 2025&#xff09; 会议地点&#xff1a;中国漠河 会议时间&#xff1a;2025年7月21-25日 截稿日期&#xff1a;2025年5月10日 支持单位&#xff1a;佛山市人工智能学会、佛…

CSS align-content 属性

定义和用法 align-content 属性修改 flex-wrap 属性的行为。它与 align-items 相似&#xff0c;但是它不对齐弹性项目&#xff0c;而是对齐弹性线。 注意&#xff1a;必须有多行项目&#xff0c;此属性才能生效&#xff01; 提示&#xff1a;使用 justify-content 属性可将主…

51单片机(三) UART协议与串口通信实验

几个问题 串行通信与并行通信的优缺点。 串行通信传输线少&#xff0c;占用引脚资源少&#xff0c;长距离传输时成本低&#xff0c;但通信控制更加复杂&#xff0c;速度比并行要慢。 并行通信占用引脚资源多&#xff0c;长距离成本高&#xff0c;但速度快。 什么是比特率&…

QTableWidget的简单使用

1.最简单的表格示例&#xff1a; ui->tableWidget->setRowCount(2);// 设置行数ui->tableWidget->setColumnCount(3);// 设置列数&#xff0c;一定要放在设置行表头之前QStringList rowHeaderList;// 行表头rowHeaderList << QStringLiteral("姓名"…

InVideo AI技术浅析(三):计算机视觉

一、图像识别与分类 1. 工作原理 图像识别与分类是计算机视觉的基础任务,旨在将输入的图像自动分配到预定义的类别中。InVideo AI 使用卷积神经网络(CNN)来实现这一功能。CNN 通过多层卷积和池化操作,自动提取图像的特征,并使用全连接层进行分类。 2. 关键技术模型 卷…

uniapp button按钮去掉默认样式

有时候要使用uniapp官方提供的客服和分享功能&#xff0c;需要用到button按钮&#xff0c;里面属性open-type正好可以实现这些功能&#xff0c;不得不使用这种方式。 但是这种方式&#xff0c;uniapp官方默认为button按钮加了些样式&#xff0c;自己写的样式也无法进行完全覆盖…