面试经典 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;
    }
};

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

相关推荐
m0_571957582 小时前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
pianmian14 小时前
python数据结构基础(7)
数据结构·算法
好奇龙猫6 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
sp_fyf_20247 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
香菜大丸7 小时前
链表的归并排序
数据结构·算法·链表
jrrz08287 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
oliveira-time8 小时前
golang学习2
算法
南宫生9 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步9 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
Ni-Guvara9 小时前
函数对象笔记
c++·算法