我是靠谱客的博主 辛勤白羊,最近开发中收集的这篇文章主要介绍合并两个有序数组(双指针法+空间优化),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:

给你两个有序整数数组 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];
}
}
}
};

最后

以上就是辛勤白羊为你收集整理的合并两个有序数组(双指针法+空间优化)的全部内容,希望文章能够帮你解决合并两个有序数组(双指针法+空间优化)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部