概述
题目:
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
题解:
双指针法:O(m+n)时间复杂度,O(m+n)空间复杂度
如果两个指针从后往前,另外有一个p指针指向m+n的位置,则空间复杂度优化到O(1)
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int p=m+n-1;
while(n){
if(m==0) nums1[p--]=nums2[--n];
else if(nums2[n-1] > nums1[m-1])
{
nums1[p--]=nums2[--n];
}
else
{
nums1[p--] = nums1[--m];
}
}
}
};
最后
以上就是辛勤白羊为你收集整理的合并两个有序数组(双指针法+空间优化)的全部内容,希望文章能够帮你解决合并两个有序数组(双指针法+空间优化)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复