【题目描述】
Given two sorted integer arrays nums1 and nums2,
merge nums2 into nums1 as
one sorted array.
Note:
You may assume that nums1 has
enough space (size that is greater or equal to m + n)
to hold additional elements from nums2.
The number of elements initialized in nums1and nums2 are m and n respectively.
【思路】
因为题目中讲到nums1中有足够的空间存储nums2中的元素,所以先将nums2中的元素赋值到nums1的元素后面,然后再利用sort函数对nums1中目前所有的元素排序一遍。
后来发现这个方法可能有点取巧,所以重新实现了一遍。
【代码】
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for(int i=m;i<n+m;i++)
{
nums1[i]=nums2[i-m];
}
sort(nums1.begin(),nums1.end());
}
};class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i,j;
i=m-1;
j=n-1;
while(i>=0&&j>=0){
if(nums1[i]>nums2[j]) nums1[i+j+1]=nums1[i--];
else nums1[i+j+1]=nums2[j--];
}
while(j>=0) nums1[j]=nums2[j--];
}
};
本文探讨了如何使用C++实现高效地将一个已排序数组与另一个已排序数组合并为一个有序数组的过程。通过两种不同的方法,旨在提高算法效率并减少额外空间的使用。
865

被折叠的 条评论
为什么被折叠?



