当前位置:网站首页>【 LeetCode 】 88. Merging two orderly array
【 LeetCode 】 88. Merging two orderly array
2022-07-29 15:02:00 【Crispy~】
题目
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2中的元素数目.
请你合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列.
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中.为了应对这种情况,nums1 的初始长度为 m + n,其中前 m个元素表示应合并的元素,后 n 个元素为 0 ,应忽略.nums2 的长度为 n .
示例 1:
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] . 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素.
示例 2:
输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] .
合并结果是 [1] .
示例 3:
输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1]. 合并结果是 [1] . 注意,因为 m = 0 ,所以 nums1 中没有元素.nums1 中仅存的 0仅仅是为了确保合并结果可以顺利存放到 nums1 中.
提示:
nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <=200
-109 <= nums1[i], nums2[j] <= 109
进阶:你可以设计实现一个时间复杂度为 O(m + n) 的算法解决此问题吗?
题解
Allocate space for the third array,Use double pointers for merging
//C++
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> nums3(m+n,0);
int i=0;
int j=0;
int k=0;
while(i<m && j<n)
{
if(nums1[i]<=nums2[j])
{
nums3[k++] = nums1[i++];
}
else
{
nums3[k++] = nums2[j++];
}
}
while(i<m)
{
nums3[k++] = nums1[i++];
}
while(j<n)
{
nums3[k++] = nums2[j++];
}
nums1 = nums3;
}
};
因为nums1的大小为m+n,So reverse order can be used,从nums1start to fill in the number at the end of,No additional space consumption is required
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = m-1;
int j = n-1;
int k = m+n-1;
while(i>=0 && j>=0)
{
if(nums1[i]>=nums2[j])
{
nums1[k--] = nums1[i--];
}
else
{
nums1[k--] = nums2[j--];
}
}
while(i>=0)
{
nums1[k--] = nums1[i--];
}
while(j>=0)
{
nums1[k--] = nums2[j--];
}
}
};
边栏推荐
- The raised platform system based on JSP&Servlet implementation
- 即时通讯-改变社交与工作状态的新型软件
- 正则、grep/egrep、sed、awk
- 双非渣渣的上岸之路!备战60天,三战滴滴侥幸收获Offer
- hyperbench:plugin.Open(“./fabric“): plugin was built with a different version of package golang.
- 上个厕所的功夫,就把定时任务的三种调度策略说得明明白白
- uni 的下拉式筛选菜单的功能/图片懒加载
- WOLFLAB一方老师为什么要写网络虚拟化《VMware NSX-T卷2》路由架构-2
- 【yolov7系列二】正负样本分配策略
- 【LeetCode】350. 两个数组的交集 II
猜你喜欢
随机推荐
Guangzhou Emergency Management Bureau released the top ten safety risks of hazardous chemicals in summer
AOP实现企业级API访问接口监控(通过Google Guava缓存数据)
中国互联网科技企业群狼围攻,谷歌终于遭受重挫导致利润大跌,它为推动鸿蒙的发展而后悔...
Nacos基础教程
4519. 正方形数组的数目
Introduction to several methods of making custom welcome interface on Weiluntong touch screen
dedecms编辑器支持pdf导入
升级openssl1.1.1(mix2s哪个版本不断流)
ArcGIS Molder Builder模型构建器基本知识
嵌入式开发经验分享,把学习当作一种兴趣
【LeetCode】566. 重塑矩阵
兆骑科创海外高层次人才引进平台,企业项目对接,赛事活动路演
共享内存 - shmget填坑记
你会看 MySQL 的执行计划(EXPLAIN)吗?
使用Xshell和Xftp7跑学校服务器记录
第4章_1——SQL语句实现MySQL增删改查
威纶通触摸屏制作自定义欢迎界面的几种方法介绍
已解决SyntaxError: invalid character in identifier
C语言 5:bool类型,关系表达式,逻辑表达式,分支语句,函数调用机制,break,continue,goto,return/exit跳转语句
兆骑科创赛事活动承办,项目路演,人才引进平台








