朴素的想法和朴素的代码:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int>temp;
int i=0,j=0;
while(i<m&&j<n){
if(nums1[i]<nums2[j]){
temp.push_back(nums1[i]);
i++;
}
else if(nums1[i]>nums2[j]){
temp.push_back(nums2[j]);
j++;
}
else{
temp.push_back(nums1[i]);
temp.push_back(nums2[j]);
i++;
j++;
}
}
if(i!=m){
nums2=nums1;
j=i;
n=m;
}
while(j<n){
temp.push_back(nums2[j]);
j++;
}
nums1=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];
}
}
};