题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
1.思路:
- 设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
- 首先将nums2中的元素简单合并到nums1中,具体放在nums1本来元素的后面。
- 其次将新的nums1数组从小到大排序。
- 具体过程如下。
2.代码:
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i,j,ch;
for(i=0;i<n;i++)
nums1[m+i]=nums2[i];
for(i=0;i<m+n;i++)
{for(j=i+1;j<m+n;j++)
if(nums1[i]>nums1[j])
{ch=nums1[i];
nums1[i]=nums1[j];
nums1[j]=ch;}}
}
};
3.分析:
- 不用重新排序的方法完成这道题,有些难度,所以采用了C++中常用的数组排序方法。
4.补充:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200301183433803.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0taSDM0,size_16,color_FFFFFF,t_70)