题目描述:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
想法一:本题首先想到使用C++STL库函数sort,感觉还是比较方便的,首先用nums2这个数组里面的元素替换nums1中空出来的地方,然后再对nums1进行排序
想法二:先进行排序,从后往前,将nums2中的元素与nums1中的元素进行排序,将排序好的2中元素放入1中,完成nums1。
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
/**方法一:使用STL库sort函数
for(auto n:nums2){
nums1[m++] = n;
}
return sort(nums1.begin(),nums1.end());**/
/**方法二:从后往前遍历***/
int i = m-1,j = n-1,k = m+n-1;
while(i >= 0 & j>= 0){
/**做一个排序,从后往前是降序**/
if(nums1[i] > nums2[j]){
nums1[k--] = nums1[i--];
}
else{
nums1[k--] = nums2[j--];
}
}
while(j >= 0){
nums1[k--] = nums2[j--];
}
}
};