思路1:直接将num1和num2进行比较,在num1中插入num2的值。本来想按照这个思路下去,结果总是出错,于是换了一种思路。
思路2:将复制num1,按照归并排序的方式进行排序
相比来说思路1更省空间,是可行的,更优
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int *tmp = (int*)malloc(nums1.size()*sizeof(int));
for(int i=0; i<nums1.size(); i++)
tmp[i] = nums1[i];
int i=0; int j=0;
int num = 0;
while((i<m)&&(j<n))
{
if(tmp[i]<nums2[j])
{
nums1[num] = tmp[i];
i++;
}
else
{
nums1[num] = nums2[j];
j++;
}
num++;
}
if(i<m)
{
for( ;i<m; i++)
{
nums1[num] = tmp[i];
num++;
}
}
if(j<n)
{
for( ;j<n; j++)
{
nums1[num] = nums2[j];
num++;
}
}
}
};