面试经典 150 题:力扣88. 合并两个有序数组

每周一道算法题启动

题目

【题目链接】

【解法一】合并后排序

排序后的数组自动省略0的数字,又学到了

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        //合并两个数组后排序
        for(int i=0; i<n; i++)
        {
            nums1[m + i] = nums2[i];
        }
        sort(nums1.begin(), nums1.end());
    }
};

【解法二】双指针

时间复杂度:O(m+n)

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        //双指针
        int pointer1=0, pointer2=0;
        int temporary;
        vector<int> num3(m+n); //数组存放
        //防止越界
        while(pointer1 < m || pointer2 < n)
        {
            //第一个数组没数放了,第二个数组还有剩的比第一个数组所有数都要大的
            //特判情况
            if(pointer1 == m) 
            {
                temporary = nums2[pointer2++];
            }
            else if(pointer2 == n)
            {
                temporary = nums1[pointer1++];
            }
        //这里不能等于,要是0的话会放进去,造成不必要麻烦
            else if(nums1[pointer1] > nums2[pointer2])
            {
                temporary = nums2[pointer2++];
            }
            else
            {
                temporary = nums1[pointer1++];
            }
            num3[pointer1 + pointer2 - 1] = temporary;
        }
        //复制数组回去num1
        nums1 = num3;
    }
};

执行用时这个不是程序运行时间嗷!

相关推荐
C雨后彩虹4 小时前
任务最优调度
java·数据结构·算法·华为·面试
少林码僧6 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)6 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
Niuguangshuo7 小时前
EM算法详解:解密“鸡生蛋“的机器学习困局
算法·机器学习·概率论
a3158238067 小时前
Android 大图显示策略优化显示(一)
android·算法·图片加载·大图片
一条大祥脚7 小时前
26.1.9 轮廓线dp 状压最短路 构造
数据结构·c++·算法
鲨莎分不晴7 小时前
反向传播的数学本质:链式法则与动态规划的完美共舞
算法·动态规划
sonadorje8 小时前
逻辑回归中的条件概率
算法·机器学习·逻辑回归
cici158748 小时前
基于Pan-Tompkins算法的ECG信号HRV提取方案
算法
McGrady-1758 小时前
拓扑导航 vs 几何导航的具体实现位置
算法