【每日算法 数据结构(C++)】—— 03 | 合并两个有序数组(解题思路、流程图、代码片段)

news/2025/1/13 3:36:25/

文章目录

  • 01 | 👑 题目描述
  • 02 | 🔋 解题思路
  • 03 | 🧢 代码片段

在这里插入图片描述

An inch of time is an inch of gold, but you can’t buy that inch of time with an inch of gold.

An inch of time is an inch of gold, but you can't buy that inch of time with an inch of gold

01 | 👑 题目描述

给你两个有序数组,请将两个数组进行合并,并且合并后的数组也必须有序

这个题目要求将两个有序数组合并成一个有序数组。在数学上,我们可以使用归并排序的思想来解决这个问题。

02 | 🔋 解题思路

假设给定的两个有序数组分别为 arr1arr2,长度分别为 n1n2。我们可以创建一个新的数组 result,长度为 n1 + n2,用于存储合并后的有序数组。

我们可以使用两个指针 ij 分别指向 arr1arr2 的起始位置。然后,我们比较这两个指针所指向的元素,并将较小的元素加入到 result 数组中。然后根据比较结果,移动相应的指针。

具体的步骤如下

  1. 创建一个新的数组 result,长度为 n1 + n2
  2. 初始化指针 ij 分别为 0,指向 arr1arr2 的起始位置。
  3. 使用循环,比较 arr1[i]arr2[j] 的大小:
    • 如果 arr1[i] < arr2[j],将 arr1[i] 加入到 result 数组中,然后将指针 i 向后移动一位。
    • 如果 arr1[i] > arr2[j],将 arr2[j] 加入到 result 数组中,然后将指针 j 向后移动一位。
    • 如果 arr1[i] = arr2[j],将 arr1[i]arr2[j] 分别加入到 result 数组中,然后将指针 ij 都向后移动一位。
    • 重复上述步骤,直到其中一个数组的元素全部加入到 result 数组中。
  4. 将剩余未加入 result 数组的元素依次加入。
  5. 返回合并后的有序数组 result

在这里插入图片描述

  • 时间 && 空间复杂度
    • 时间复杂度O(n1 + n2)
      其中 n1 和 n2 分别是两个有序数组的长度。这是因为我们需要将两个数组中的所有元素逐个比较和复制到新的数组中

    • 空间复杂度O(n1 + n2)
      因为我们需要创建一个大小为 n1 + n2 的新数组来存储合并后的有序数组

03 | 🧢 代码片段

#include <iostream>
#include <vector>std::vector<int> mergeSortedArrays(const std::vector<int>& arr1, const std::vector<int>& arr2) {std::vector<int> mergedArray;int i = 0; // 指向arr1的指针int j = 0; // 指向arr2的指针// 比较arr1和arr2中的元素,将较小的元素加入到mergedArray中while (i < arr1.size() && j < arr2.size()) {if (arr1[i] < arr2[j]) {mergedArray.push_back(arr1[i]);i++;} else {mergedArray.push_back(arr2[j]);j++;}}// 将剩余未加入mergedArray的元素依次加入while (i < arr1.size()) {mergedArray.push_back(arr1[i]);i++;}while (j < arr2.size()) {mergedArray.push_back(arr2[j]);j++;}return mergedArray;
}int main() {std::vector<int> arr1 = {1, 3, 5, 7, 9};std::vector<int> arr2 = {2, 4, 6, 8, 10};std::vector<int> mergedArray = mergeSortedArrays(arr1, arr2);std::cout << "Merged Array: ";for (int num : mergedArray) {std::cout << num << " ";}std::cout << std::endl;return 0;
}

在这里插入图片描述

在这里插入图片描述

各位大佬点点关注,点赞,收藏,有空的时候再回来看看,谢谢

http://www.ppmy.cn/news/573393.html

相关文章

合宙Air724UG Cat.1模块硬件设计指南--看门狗

概述 Air724UG 内部已经自带了看门狗&#xff0c;4秒进行一次喂狗&#xff0c;如果主芯片异常死机&#xff0c;自带的看门狗15秒左右会硬件复位主芯片。 另外主芯片死机情况下&#xff0c;reset键也可以硬重启。 通常情况下不需要外加硬件看门狗&#xff0c;如果对系统稳定性有…

【C/C++实战项目】扫雷游戏

目录 项目分析 外部头文件 初始化 打印 扫雷游戏函数 main函数 项目分析 游戏需要自定义地图的大小、埋雷的数量通过输入坐标进行扫雷&#xff0c;输入的坐标是埋雷的地方&#xff0c;则游戏失败输入的坐标未埋雷&#xff0c;则该坐标显示周围8个坐标总共的雷数游戏初始…

怎样将计算机和电视机连接网络,电脑如何连电视机连接 电脑连接电视机步骤【详解】...

随着技术的不断提高&#xff0c;很多数码产品都是比较完善的&#xff0c;而且连接的方式也越来越多了。在我们的生活中电脑链接电视并不是什么稀奇的事情了&#xff0c;电脑链接电视以后&#xff0c;可以让我们更好的玩游戏&#xff0c;看视频和购物等等&#xff0c;下面我们一…

电视html接口,HDMI是什么接口?

HDMI是高清多媒体接口(High Definition Multimedia Interface)&#xff0c;一种全数字化视频和声音发送接口&#xff0c;可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设备。HDMI可以同时发送音频…

路由器能连接到电视上看电视吗?

其实&#xff0c;很多人并不知道&#xff0c;不管是传统电视还是智能电视&#xff0c;都可以连接路由器看电视。也就是说&#xff0c;只要家里有宽带&#xff0c;那么电视就完全没必要缴有线电视费来观看电视直播节目了。下面我就给大家详细的介绍一下&#xff0c;码字不易&…

电视html转vga没有声音,电脑用VGA线连接电视,怎么声音不能传进电视?

电脑用VGA线连接电视,怎么声音不能传进电视?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 电脑用VGA线连接电视,怎么声音不能传进电视? VGA(Video Graphics Array)是一种专门为电脑显示器设计的视频传输标…

电视hdmi接口在哪_HDMI是什么意思?花5分钟看完这篇文章:原来如此!我现在明白了...

HDMI接口想必很多人都不陌生,随着智能电视盒子的普及,越来越多的家庭都通过HDMI高清线来连接电视盒子与电视,广泛应用于智能电视、机顶盒、投影仪等。 那么HDMI是什么意思呢? HDMI全称是高清晰度多媒体接口,英文全称High Definition Multimedia Interface。 通俗一点说,H…

电视hdmi接口在哪_变废为宝!把旧笔记本电脑当电视盒子用

之前跟大家介绍过电视机的各种接口&#xff0c;有人问到笔记本电脑怎么连接电视&#xff0c;笔记本电脑的资源比电视盒子多&#xff0c;而且如果家里有闲置的笔记本电脑用来当电视盒子用&#xff0c;不需要智能电视&#xff0c;旧电视机和旧笔记本电脑都能变废为宝。 笔记本连接…