题目
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
方法一:暴力法 先合并再排序
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { for(int i=0;i<nums2.size();i++)
{
nums1[m+i]=nums2[i];
}
for(int i=0;i<nums1.size();i++){
for(int j=0;j<nums1.size()-i-1;j++)
{
if(nums1[j+1]<nums1[j])
{
int temp=nums1[j];
nums1[j]=nums1[j+1];
nums1[j+1]=temp;
}
}
}
}
};
方法二
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int last=m+n-1;
while(n){
if(m==0||nums1[m-1]<=nums2[n-1])
{
nums1[last--]=nums2[--n];
}
else
{
nums1[last--]=nums1[--m];
}
}
}
};