题面

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 使得 num1 成为一个有序数组。

样例

1. 输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 2. 输入:
nums1 = [0], m = 0
nums2 = [6], n = 1 输出: [6]

算法

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

与合并有序链表类似。

1. 如果m为0,直接返回就可以了。如果n为0,则需要把nums2中前n个元素都搬到nums1中,返回。

2. 如果,m、n都不为0,计算合并后的元素数len = m+n, 我们从后往前为nums1[len--]赋max(nums1[m]nums2[n]), 之后较大的数组下标自减(已经比较后填入了nums1中),直到某个数组被遍历完。

3. 如果2之后,m == 0,那么代表nums1中的元素都已经填完了,就把nums2中剩下的元素按次序填入nums1中即可;如果 n == 0,即nums2填完了,那就结束,剩下的nums1本来就是有序的。

源码

 class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if(n == )
return ;
else if(m == )
{
for(int i=; i<n; i++)
nums1[i] = nums2[i];
} //从往前放置
int len = m+n-;
m--; n--;
while(m >= && n >= && len >= )
{
if(nums1[m] < nums2[n])
{
nums1[len] = nums2[n];
len--; n--;
}
else
{
nums1[len] = nums1[m];
len--; m--;
}
}
if(m < )
{
for(int i=; i<=n; i++)
nums1[i] = nums2[i];
}
}
};

leetcode-88. 合并两个有序数组 · Aaray的更多相关文章

  1. Java实现 LeetCode 88 合并两个有序数组

    88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元 ...

  2. Leetcode 88 合并两个有序数组 Python

    合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分 ...

  3. LeetCode 88. 合并两个有序数组

    题目: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  4. LeetCode 88. 合并两个有序数组(Merge Sorted Array)

    题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  5. [LeetCode每日一题]88. 合并两个有序数组

    [LeetCode每日一题]88. 合并两个有序数组 问题 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 初始化 n ...

  6. 【LeetCode】88. 合并两个有序数组

    88. 合并两个有序数组 知识点:数组:排序:双指针: 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 ...

  7. leetcode.双指针.88合并两个有序数组-Java

    1. 具体题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别 ...

  8. leetcode刷题-88.合并两个有序数组

    题目 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  9. 领扣(LeetCode)合并两个有序数组 个人题解

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...

随机推荐

  1. 在Mac 搭建robotframework 环境 遇到ride.py 打不开的方法(没试过,先记录在此)

    折腾来一下午,遇到了好多坑 坑 1.不要用pip 下载wxpython 2.不要用mac自带的python 3.不要自己下载wxpython 步骤: 1. 安装homebrew, /usr/bin/r ...

  2. 【421】C语言输入输出函数说明

    目录: sscanf & sprintf scanf & printf getchar & putchar fgets & fputs fscanf & fpr ...

  3. 123457123456#0#-----com.twoapp.mathGame13--前拼后广--13种数学方法jiemei

    com.twoapp.mathGame13--前拼后广--13种数学方法jiemei

  4. centos7.5安装图形界面

    1.centos7.4安装图形界面 yum check-update && yum install epel-release && yum groupinstall & ...

  5. python之bytes和string相互转换

    来源:https://www.cnblogs.com/skiler/p/6687337.html 1.bytes主要是给计算机看的,string主要是给人看的 2.中间有个桥梁就是编码规则,现在大趋势 ...

  6. 搭建Android与多ble蓝牙设备并发通讯小框架

    此框架支持多种不同类型的ble设备,同时连接.收发数据,互不干扰.比如APP同时连两个LED蓝牙灯.两个手环.一个蓝牙加热器,当然连接单个ble设备,或者只连接一种ble设备同样适用本框架. 前言 小 ...

  7. 安卓 adb命令

    获取包名 aapt d badging C:\Users\600844\Desktop\beijingtoon.apk "package launchable-activity" ...

  8. 【POJ - 3268 】Silver Cow Party (最短路 Dijkstra算法)

    Silver Cow Party Descriptions 给出n个点和m条边,接着是m条边,代表从牛a到牛b需要花费c时间,现在所有牛要到牛x那里去参加聚会,并且所有牛参加聚会后还要回来,给你牛x, ...

  9. 微服务之Polly熔断策略

    NET Core 微服务之Polly熔断策略 紧接着上一篇说,咱们继续介绍Polly这个类库 熔断策略(Circuit-breaker) 如果调用某个目标服务出现过多超时.异常等情况,可以采取一定时间 ...

  10. udevdm命令详解

    udevadm 后接一个命令和命令指定选项.它控制了udev运行的行为,处理内核事件,控制事件队列,并且提供简单的调试机制. 选项: --debug 打印错误信息 --version 打印版本信息 - ...